home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / hk2 / bas / hk2anl.bas < prev    next >
Encoding:
BASIC Source File  |  1995-07-09  |  86.1 KB  |  2,293 lines

  1. 10 '------------------------------------------------------------------
  2. 20 '  HK2ANL.BAS  Copyrigit(C) T.Komura    / 家計簿システム HK   /
  3. 30 '                                       / Version 1           /
  4. 31 '   Version 4.0  1992.08.04-1992.09.14  / 分析プログラム      /
  5. 32 '           4.0a 1992.10.11 エンゲル係数基数を収入計から支出計に修正
  6. 33 'HK Version 1.0  1993.01.01 公開バージョン
  7. 34 '   Version 1.1  1993.08.04 分析条件ウインドウを12ドットフォント化
  8. 35 '   Version 1.3  1994.01.04 月次処理追加
  9. 36 '   Version 1.3  1994.01.04 月次統計処理追加
  10. 37 '   Version 1.4  1994.11.11 月間レポート印刷で合計金額が1月ずれるのを修正
  11. 38 '   V2.0    L10  1995.06.13 Version 2.0
  12. 100 '------------------------------------------------------------------
  13. 120 CLEAR ,,,,1024,300*1024
  14. 165 DIM CFI$(15)
  15. 170 GOSUB *CONFIGファイルチェック
  16. 190 '
  17. 200 *初期設定:'--------------------------------------------------------
  18. 210 CMD$="CD "+PRGDRV$:SHELL CMD$
  19. 220 CONSOLE 0,24,0:MOUSE 0
  20. 230 DIM MSGD%(28000):' 音声メッセージ配列定義 プログラム先頭で定義
  21. 240 LOAD@ FMBDRV$+"\FMP.FMB"
  22. 250 PLAY "@30T150V6":DATX$=DATE$
  23. 255 'ウインドウ関係座標配列
  24. 256 G=7:B=50
  25. 260 DIM B_X1(G,B),B_X2(G,B),B_Y1(G,B),B_Y2(G,B),BST(G,B)
  26. 265 DIM W_X1(G),W_X2(G),W_Y1(G),W_Y2(G)
  27. 266 DIM W_XA(G),W_XB(G),W_YA(G),W_YB(G)
  28. 267 DIM MD_SB#(10465),MD_SW#(10465),ANLW#(16440),CAUT#(2000):'max : HELP window
  29. 268 'デ-タ配列
  30. 280 DIM ITEM$(20),ITEMC(20),SMOPT(10,3),MESH$(20),IMSH(15)
  31. 282 DIM MX$(20),MX#(20),DYN$(18),DYN#(18),DRM$(16),GDT#(6,31)
  32. 284 DIM GDYY(31*12),GDYM$(31*12),GDYE$(31*12)
  33. 295 DIM DOC$(2000)                            :'HELPデータ
  34. 300 INTERVAL 1                  :'プログラム先頭
  35. 310 ON INTERVAL GOSUB *時計表示 :'プログラム先頭 
  36. 320 GOSUB *ボタン座標読み取り
  37. 325 GOSUB *分析モード読み取り
  38. 326 GOSUB *メッシュデータ定義
  39. 330 'CLS:COLOR 7:PRINT int((int(((639-0+1)+7)/8)*(465-55+1)*4+8-1)/8)
  40. 360 DIM LMB#(900),ABOUTD#(2071),HLPL#(397),HLPC#(8449)
  41. 370 ON ERROR GOTO *ERROR
  42. 400 GOSUB *MCREAD:GOSUB *DCLOCKREAD
  43. 440 '
  44. 510 CTRLB1=17:'コントロールボタン個数
  45. 515 CTRLB2=15
  46. 524 HKANL  =4  :'検索ボタン番号
  47. 526 HKANLEND=10:'終了ボタン番号
  48. 540 DOCF$="\HK2anl.HLP"
  49. 600 SMODE=1'
  50. 800 PRTCD=1:'FMPR:PRTCD=0 ESC/P:PRTCD=1
  51. 980 '
  52. 1000 *メインルーチン:'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  53. 1005 GOSUB *SEFFECT1
  54. 1010 MESN=1:GOSUB *MESDSP
  55. 1020 GOSUB *本日の日付
  56. 1030 SMODC=7:GOSUB *分析モード表示
  57. 1035 SDAYD$=SDAY$:GOSUB *SDAY表示
  58. 1040 MOUSE 1,320,64,1
  59. 1050 MCN=1:GOSUB *MCDSET
  60. 1055 MESN=2:GOSUB *MESDSP
  61. 1060 SMODE=1:SWNO=11:BSNDOFF=1:GOTO *S06
  62. 1100 *メイン選択
  63. 1110 IF MES2OFF=0 THEN MESN=2:GOSUB *MESDSP
  64. 1130 SWPASS=0:G=1:GOSUB *MCSELECT
  65. 1140 IF SWNO<0 THEN SWNO=13
  66. 1150 '             HK2 記入 検索 分析 CLDR 設定 日付 時計 HELP 終了 SEL  実行 取消
  67. 1155 ON SWNO GOTO *S01,*S02,*S02,*S02,*S02,*S02,*S03,*S03,*S07,*S09,*S06,*S04,*S05
  68. 1160 GOTO 1100:STOP
  69. 1190 '
  70. 1200 *S06:'モード変更 --------------------------------------------------
  71. 1510  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  72. 1515  MESN=18:GOSUB *SNDMSG
  73. 1520  GOSUB *モード選択
  74. 1530  IF SMODSEL=0 THEN 1625
  75. 1550  IF SMODE=9 THEN 1610
  76. 1560  CDTSET=0:GOSUB *分析条件設定
  77. 1570  IF ANLCAN=0 THEN 1600
  78. 1575  SMODSEL=0:SMODC=7:GOSUB *分析モード表示
  79. 1580  MES2OFF=0:GOTO 1625
  80. 1590 '
  81. 1600  GOSUB *分析結果画面消去
  82. 1605  GOSUB *分析条件表示:CDTSET=1
  83. 1610  MESN=13:GOSUB *MESDSP:MESN=16:GOSUB *SNDMSG
  84. 1620  MES2OFF=1
  85. 1625  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  86. 1630  GOTO *メイン選択
  87. 1690 '
  88. 1700 *S05:'取消 ---------------------------------------------------------
  89. 1710  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  90. 1720  IF SMODSEL=1 THEN 1750
  91. 1730  MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
  92. 1740  FOR II=1 TO 5000:NEXT II:GOTO 1760
  93. 1750  GOSUB *分析条件消去:SMODSEL=0
  94. 1751  ANLF=0
  95. 1755  SMODC=7:GOSUB *分析モード表示
  96. 1760  MES2OFF=0
  97. 1770  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  98. 1780  GOTO *メイン選択
  99. 1790 '
  100. 1920 '
  101. 2000 *S04:'実行 --------------------------------------------------------
  102. 2010  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  103. 2020  IF SMODSEL=1 THEN 2100
  104. 2030  MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
  105. 2040  FOR II=1 TO 5000:NEXT II:MES2OFF=0:GOTO 2470
  106. 2090 '
  107. 2100  ON SMODE GOSUB *AN01,*AN02,*AN03,*AN04,*AN05,*AN06,*AN07,*AN08,*AN09
  108. 2110  IF SMODE=3 THEN 2236
  109. 2120  MESN=14:GOSUB *SNDMSG
  110. 2236  ANLF=1:SMODC=7:GOSUB *分析モード表示
  111. 2240  MES2OFF=0
  112. 2460  SMODSEL=0
  113. 2470  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  114. 2480  GOTO *メイン選択
  115. 2490 '
  116. 2500 '*S07:'SDAY切り換え------------------------------------------------
  117. 2510  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  118. 2520  IF SDAYC=0 THEN SDAYX$=SDAY$
  119. 2530  MESN=22:GOSUB *MESDSP
  120. 2540  SDAYC=1-SDAYC
  121. 2550  IF SDAYC=1 THEN SDAY$="01" ELSE SDAY$=SDAYX$
  122. 2551  SDAY=VAL(SDAY$):IF SDAY=1 THEN SDAYC=1
  123. 2555  GOSUB *SDAY表示
  124. 2560  MES2OFF=0:WAIT SWAIT
  125. 2570  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  126. 2580  GOTO *メイン選択
  127. 2590 '
  128. 6000 *S01:'About HK2---------------------------------------------------'
  129. 6010  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  130. 6020  MESN=1:GOSUB *MESDSP
  131. 6030  GOSUB *ABOUT表示
  132. 6060  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  133. 6070  GOTO *メイン選択
  134. 6080 '
  135. 6100 *S03:'Digital Clock ----------------------------------------------'
  136. 6110  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  137. 6120  MESN=20:GOSUB *MESDSP
  138. 6130  GOSUB *DGCLOCK
  139. 6160  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  140. 6170  GOTO *メイン選択
  141. 6180 '
  142. 6200 *S07:'Help -------------------------------------------------------'
  143. 6210  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  144. 6220  MESN=4:GOSUB *MESDSP
  145. 6230  GOSUB *HKHELP
  146. 6260  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  147. 6270  GOTO *メイン選択
  148. 6280 '
  149. 7900 '
  150. 8000 *S02:'プログラム呼び出し・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  151. 8010 IF SWNO=HKANL THEN GOTO *メイン選択
  152. 8020 G=1:B=HKANL:BST(G,B)=0:GOSUB *BTN_ONOFF
  153. 8025 G=1:B=SWNO :BST(G,B)=1:GOSUB *BTN_ONOFF
  154. 8110 MESN=9:GOSUB *MESDSP':MESN=24:GOSUB *SNDMSG
  155. 8120 INTERVAL OFF:GOSUB *SEFFECT2
  156. 8130 ON SWNO-1 GOTO *S021,*S022,*S02,*S024,*S025
  157. 8150 '
  158. 8160 *S021:RUN "HK2in.bas"
  159. 8170 *S022:RUN "HK2src.bas"
  160. 8180 *S024:RUN "HK2cld.bas"
  161. 8190 *S025:RUN "HK2cfg.bas"
  162. 8940 '
  163. 9000 *S09:'終了・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  164. 9020 G=1:B=HKANLEND:BST(G,B)=1:GOSUB *BTN_ONOFF
  165. 9060 '
  166. 9110 MESN=9:GOSUB *MESDSP:MESN=24:GOSUB *SNDMSG
  167. 9130 INTERVAL OFF:GOSUB *SEFFECT2
  168. 9140 RUN "HK2.BAS"
  169. 9160 '
  170. 9900 '-------------------------------------------------------------------
  171. 9910 '    GENERAL SUB ROUTINE
  172. 9920 '-------------------------------------------------------------------
  173. 10000 *CHR1IN:'////////// 1文字入力
  174. 10010  A$=INKEY$:IF A$="" THEN 10010
  175. 10020  A=INSTR(C$,A$)
  176. 10030  IF A=0 THEN MESN=13:GOSUB *SNDMSG:GOTO 10010
  177. 10040  RETURN
  178. 10050 '
  179. 10060 '
  180. 10070 *MESDSP:'////////// メッセージ表示
  181. 10080  RESTORE *MESDAT
  182. 10090  FOR IM=1 TO MESN:READ XM,YM,CM,CB,BM,MES$:NEXT IM
  183. 10105  LINE(0,463)-(639,479),PSET,0,BF
  184. 10115  SYMBOL(0,465),MES$,.75!,.75!,CM
  185. 10120  'IF BM=1 THEN PLAY "L4O4A"
  186. 10130  RETURN
  187. 10140 '
  188. 10200 *MESDAT:'////////// メッセージデータ
  189. 10205 '    XM, YN, CM, CB, BM
  190. 10210 DATA  2, 23,  5,  0,  1 :'--- 01
  191. 10215 DATA "家計簿システム HK2 [分析]モード"
  192. 10220 DATA  2, 23,  7,  0,  0 :'--- 02
  193. 10225 DATA "分析モードを選んでください。"
  194. 10230 DATA  2, 23,  7,  0,  0 :'--- 03
  195. 10235 DATA "●印の分析条件を設定してください。"
  196. 10240 DATA  2, 23,  5,  0,  1 :'--- 04
  197. 10245 DATA "HKHELP★分析モードの説明を表示しています。  頁移動-[ヒ][フ] 行移動-[▲][▼] 終了-[■]" 
  198. 10250 DATA  2, 23,  4,  0,  1 :'--- 05
  199. 10255 DATA ""
  200. 10260 DATA  2, 23,  6,  0,  1 :'--- 06
  201. 10265 DATA "この分析モードでは、指定した分析条件は無効です。"
  202. 10270 DATA  2, 23,  6,  0,  0 :'--- 07
  203. 10275 DATA "分析開始年月が分析終了年月よりも大きくなっています。 訂正してください。"
  204. 10280 DATA  2, 23,  6,  0,  0 :'--- 08
  205. 10285 DATA "分析終了年月をもう少し小さく設定してください。"
  206. 10290 DATA  2, 23,  5,  0,  1 :'--- 09
  207. 10295 DATA "★★★しばらくお待ちください....."
  208. 10300 DATA  2, 23,  6,  0,  0 :'--- 10
  209. 10305 DATA "この分析モードでは、指定した分析項目は無効です。分析項目を選択し直して下さい。"
  210. 10310 DATA  2, 23,  6,  0,  0 :'--- 11
  211. 10315 DATA "分析項目が指定されていません。 分析項目を選んでください。"
  212. 10320 DATA  2, 23,  7,  0,  0 :'--- 12
  213. 10325 DATA "分析条件ファイルを保存しますか? 保存する--[OK] 保存しない--[NG]"
  214. 10330 DATA  2, 23,  7,  0,  1 :'--- 13
  215. 10335 DATA "分析条件を確認して[実行]ボタンを押してください。"
  216. 10340 DATA  2, 23,  6,  0,  1 :'--- 14
  217. 10345 DATA "分析モードを選んでください。"
  218. 10350 DATA  2, 23,  6,  0,  1 :'--- 15
  219. 10355 DATA "分析開始年月の家計簿ファイルがありません。"
  220. 10360 DATA  2, 23,  6,  0,  1 :'--- 16
  221. 10365 DATA "分析終了年月の家計簿ファイルがありません。"
  222. 10370 DATA  2, 23,  4,  0,  1 :'--- 17
  223. 10375 DATA "★分析実行中!! しばらくお待ちください。"
  224. 10380 DATA  2, 23,  6,  0,  1 :'--- 18
  225. 10385 DATA "分析の結果該当するデータが有りませんでした。"
  226. 10390 DATA  2, 23,  7,  0,  1 :'--- 19
  227. 10395 DATA "分析終了! [▲前頁][▼次頁]で頁切替え。 [取消]で分析終了。"
  228. 10400 DATA  2, 23,  4,  0,  1 :'--- 20
  229. 10405 DATA "★統計演算処理実行中! しばらくお待ちください。"
  230. 10410 DATA  2, 23,  7,  0,  1 :'--- 21
  231. 10415 DATA "マウスで内容を見たい日付のグラフ(白い点)をクリックしてください。 終了:[取消]"
  232. 10420 DATA  2, 23,  4,  0,  1 :'--- 22
  233. 10425 DATA "★月次処理開始日を変更します。"
  234. 10430 DATA  2, 23,  6,  0,  1 :'--- 23
  235. 10435 DATA "統計データファイルをオールクリアしますか? クリアする--[OK] クリアしない--[NG]"
  236. 10600 *SEFFECT1'////////////////////////////////////////////////////////
  237. 10605  SCREEN 1,1,2,1:PALETTE 9,[0,0,0]:LINE(0,0)-(639,479),PSET,1,BF
  238. 10610  SCREEN 1,0,2,1:GOSUB *表紙表示
  239. 10612  SCREEN 1,1,3,1:
  240. 10620  FOR II=0 TO 240 STEP 2:PALETTE 9,[II,II,II]
  241. 10621 '   LINE(320-II,240-II*3/4)-(320+II,240+II*3/4),PSET,0,B
  242. 10622     LINE(0,240-II)-(639,240+II),PSET,0,BF
  243. 10623  NEXT II
  244. 10630  SCREEN 1,0,1,0:INTERVAL ON
  245. 10640  SCREEN 0
  246. 10645  RETURN
  247. 10650 '
  248. 10700 *SEFFECT2'////////////////////////////////////////////////////////
  249. 10712  SCREEN 1,1,3,1:
  250. 10720  FOR II=240 TO 0 STEP -1:PALETTE 9,[II,II,II]
  251. 10721     LINE(0,240+II)-(639,240-II),PSET,1,B
  252. 10723  NEXT II
  253. 10730  MESN=9:GOSUB *MESDSP
  254. 10740  RETURN
  255. 10990 '
  256. 11000 *SNDMSG:'  SAVE "SNDMSG.SUB",A
  257. 11005  IF SNDMF=0 THEN RETURN
  258. 11010  '・・・・・・・・・・・・・・・・・  サウンドメッセージ実行サブルーチン  1989.02.04
  259. 11020  '                   入力=MESN (メッセージNo.)
  260. 11030  '
  261. 11070  IF MESN>36 THEN *RETURN_SNDMSG :'END
  262. 11080  RESTORE *MSGNAM
  263. 11090  FOR IMSG=1 TO MESN
  264. 11100    READ MSGD$
  265. 11110  NEXT IMSG
  266. 11120  MSGFN$=SNDDRV$+"\"+MSGD$+"_F.SND"
  267. 11130  LOAD@ MSGFN$,MSGD%
  268. 11140  PCMPLAY MSGD%:WAIT SWAIT
  269. 11150 *RETURN_SNDMSG :RETURN
  270. 11160 *MSGNAM :'////////// .SND File Name Data
  271. 11170 DATA "OHA1"   :'  1 おはよう
  272. 11180 DATA "KONN"   :'  2 こんにちわ
  273. 11190 DATA "KONBAN" :'  3 こんばんわ
  274. 11200 DATA "goyuku" :'  4 ごゆっくり
  275. 11210 DATA "GOKRO2" :'  5 ごくろうさま
  276. 11220 DATA "OTUKA"  :'  6 お疲れさま
  277. 11230 DATA "DOUZO"  :'  7 おまたせ
  278. 11240 DATA "ARIGA2" :'  8 ありがとう
  279. 11250 DATA "RUNRUN" :'  9 るんるん
  280. 11260 DATA "DAMEDE" :' 10 だめでしょう
  281. 11270 DATA "IIDE1"  :' 11 いいですか
  282. 11280 DATA "NANISI" :' 12 なにしてるの
  283. 11290 DATA "DAMEDA" :' 13 だめだめ
  284. 11300 DATA "OWARI"  :' 14 終わりました
  285. 11310 DATA "SIBA"   :' 15 しばらくお待ち下さい
  286. 11320 DATA "YOROSI" :' 16 よろしいですか
  287. 11330 DATA "TYANTO" :' 17 ちゃんとしなさい
  288. 11340 DATA "ERANDE" :' 18 選んでください
  289. 11350 DATA "KAKNIN" :' 19 確認して下さい
  290. 11360 DATA "NYURYO" :' 20 入力してください
  291. 11370 DATA "IRA"    :' 21 いらっしゃいませ 
  292. 11380 DATA "OYASUM" :' 22 おやすみ
  293. 11390 DATA "ARIGA3" :' 23 ありがとうございました
  294. 11400 DATA "TYOTO"  :' 24 ちょっと待って
  295. 11410 DATA "DAMEYO" :' 25 駄目よ   v1.4 DAMEY0-->DAMEYO 誤記修正
  296. 11420 DATA "YAMETE" :' 26 やめて
  297. 11430 DATA "TIGAU"  :' 27 ちがうよ
  298. 11440 DATA "PINPON" :' 28 ぴんぽーん
  299. 11450 DATA "BUU"    :' 29 ぶー
  300. 11460 DATA "MOUII"  :' 30 もういいよう  
  301. 11470 DATA "DEKITA" :' 31 できたよー
  302. 11480 DATA "IIDE2"  :' 32 いいですか(2)
  303. 11490 DATA "YOSI"   :' 33 よしなさい
  304. 11500 DATA "OYOSI"  :' 34 およしなさい
  305. 11510 DATA "YAMENA" :' 35 やめなさい
  306. 11520 DATA "GOMEN"  :' 36 ごめん
  307. 11530 '                                    
  308. 12000 '////////// 年月日入力 & 曜日表示
  309. 12010 '                    
  310. 12045 *週検索
  311. 12050  DATA "SUN",2,"MON",7,"TUE",7,"WED",7,"THU",7,"FRI",7,"SAT",5
  312. 12060  GOSUB *WEEKN:RESTORE 12050:FOR IW=0 TO WK:READ WKM$,CW:NEXT IW
  313. 12080  RETURN
  314. 12090 '
  315. 12450 *WEEKN :'////////// 週NO.検索    'v1.3 bugfix 93.12.27
  316. 12460  U=0    :'・・・・・・・・・・・・・・・・・・・・・・・・ Input; YR MN   Output; WK DN
  317. 12470  IF YR/4-INT(YR/4)=0 THEN U=1
  318. 12480  DATA 0,31,28,31,30,31,30,31,31,30,31,30,31
  319. 12490  DATA 0,31,29,31,30,31,30,31,31,30,31,30,31
  320. 12500  IF U=0 THEN RESTORE 12480 ELSE RESTORE 12490
  321. 12505 'IF MN=1 THEN MDN=0:MNDN=31:GOTO 12520
  322. 12510  MDN=0:FOR IWEKN=1 TO MN:READ DN:MDN=MDN+DN:NEXT IWEKN:'1日までの日数
  323. 12515  READ MNDN                                              :'当月の日数
  324. 12516  IF DY>MNDN THEN DY=MNDN                                :'V1.3!
  325. 12520  YDN#=MDN+YR*365+INT((YR+3)/4)+5+DY-1
  326. 12530  WK=(YDN#/7-INT(YDN#/7))*7
  327. 12540  RETURN
  328. 12550 '
  329. 12600 *年月日変更:                     'v1.3 bugfix 93.12.27
  330. 12601  GOSUB *WEEKN
  331. 12602  DY=DY+DDEF
  332. 12604  IF DY>MNDN THEN DY=1     :MDEF=+1
  333. 12606  IF DY<1    THEN DY=31    :MDEF=-1
  334. 12610  MN=MN+MDEF
  335. 12620  IF MN>12   THEN MN=MN-12 :YDEF=+1
  336. 12630  IF MN<1    THEN MN=12+MN :YDEF=-1
  337. 12640  YR=YR+YDEF
  338. 12650  IF YR<0    THEN YR=10000+YR
  339. 12660  IF YR>9999 THEN YR=YR-10000
  340. 12665  GOSUB *WEEKN
  341. 12668  DY$=RIGHT$(STR$(100+DY),2)
  342. 12670  MN$=RIGHT$(STR$(100+MN),2)
  343. 12680  YR$=RIGHT$(STR$(10000+YR),4)
  344. 12690  RETURN
  345. 12695 '
  346. 12700 *本日の日付
  347. 12705  DEF FONT "システム   12ドット"
  348. 12710  TY$=LEFT$(DATE$,2) :TY=VAL(TY$)
  349. 12720  IF TY<90 THEN TY=TY+2000 ELSE TY=TY+1900
  350. 12730  TY$=RIGHT$(STR$(TY),4)
  351. 12740  TM$=MID$(DATE$,4,2):TM=VAL(TM$)
  352. 12750  TD$=RIGHT$(DATE$,2):TD=VAL(TD$)
  353. 12760  YR=TY:MN=TM:DY=TD:GOSUB *週検索:IF CW=0 THEN CW=7
  354. 12770  TYMD$=TY$+"."+TM$+"."+TD$
  355. 12780  LINE(475,5)-(560,17),PSET,0,BF
  356. 12790  SYMBOL(476,6),TYMD$,.75!,.75!,7
  357. 12800  SYMBOL(542,6),WKM$,.75!,.75!,CW
  358. 12810  RETURN
  359. 12820 '
  360. 14000 'マウス,ウインドウ関係サブルーチン集   v1.0 1995.05.14
  361. 14010 '--------------------------------------------------
  362. 14020 '
  363. 14030 'マウスカーソル形状セット   v1.0 1994.02.13
  364. 14040 *MCDSET
  365. 14050  MOUSE 2,MCAND$(MCN),MCDOT$(MCN),MC_X(MCN),MC_Y(MCN)
  366. 14060  RETURN
  367. 14070 *MCREAD
  368. 14080  RESTORE *MCDATA
  369. 14090  FOR II=1 TO 3
  370. 14100    FOR JJ=1 TO 32:MCAND$(II)="":MCDOT$(II)="":NEXT JJ
  371. 14110    READ MC_X(II),MC_Y(II)
  372. 14120    FOR JJ=1 TO 32:READ MCAND:MCAND$(II)=MCAND$(II)+CHR$(MCAND):NEXT JJ
  373. 14130    FOR JJ=1 TO 32:READ MCDOT:MCDOT$(II)=MCDOT$(II)+CHR$(MCDOT):NEXT JJ
  374. 14140  NEXT II
  375. 14150  RETURN
  376. 14160 *MCDATA
  377. 14170 '指 ////////////////////////////////////////
  378. 14171 DATA 0,0
  379. 14172 DATA &H1F,&HFF,&H0F,&HFF,&H07,&HFF,&H83,&HFF' and
  380. 14173 DATA &HC0,&H3F,&HE0,&H07,&HF0,&H01,&HF8,&H00
  381. 14174 DATA &HF0,&H00,&HE0,&H00,&HE0,&H00,&HE0,&H00
  382. 14175 DATA &HE0,&H00,&HF0,&H00,&HF8,&H00,&HFC,&H00
  383. 14176 DATA &H00,&H00,&H60,&H00,&H30,&H00,&H18,&H00' dot
  384. 14177 DATA &H0C,&H00,&H06,&H80,&H03,&H50,&H01,&HAA
  385. 14178 DATA &H05,&HFE,&H04,&HFE,&H06,&HFE,&H07,&HFE
  386. 14179 DATA &H03,&HFF,&H01,&HFF,&H00,&H7F,&H00,&H1F
  387. 14180 'コーヒー///////////////////////////////////
  388. 14181 DATA 7,7
  389. 14182 DATA &HFF,&HFF,&HF2,&H4F,&HE4,&H9F,&HE4,&H9F' and
  390. 14183 DATA &HE6,&H1F,&HF2,&H4F,&HC0,&H07,&HC0,&H01
  391. 14184 DATA &HC0,&H06,&HC0,&H06,&HC0,&H05,&HC0,&H03
  392. 14185 DATA &HE0,&H0F,&H80,&H01,&HC0,&H03,&HE0,&H07
  393. 14186 DATA &H00,&H00,&H04,&H90,&H09,&H20,&H09,&H20' dot
  394. 14187 DATA &H08,&HA0,&H04,&H90,&H00,&H00,&H1F,&HF0
  395. 14188 DATA &H15,&HF0,&H13,&H30,&H15,&H30,&H1F,&HF0
  396. 14189 DATA &H0F,&HE0,&H00,&H00,&H1F,&HF8,&H00,&H00
  397. 14190 '待った //////////////////////////////////////
  398. 14191 DATA 7,7
  399. 14192 DATA &HF0,&H1F,&HC0,&H07,&H80,&H03,&H80,&H03' and
  400. 14193 DATA &H00,&H01,&H00,&H01,&H00,&H01,&H00,&H01
  401. 14194 DATA &H00,&H01,&H00,&H01,&H00,&H01,&H80,&H03
  402. 14195 DATA &H80,&H03,&HC0,&H07,&HF0,&H1F,&HFF,&HFF
  403. 14196 DATA &H00,&H00,&H00,&H00,&H07,&HC0,&H1F,&H80' dot
  404. 14197 DATA &H1F,&H00,&H3E,&H08,&H3C,&H18,&H38,&H38
  405. 14198 DATA &H30,&H78,&H20,&HF8,&H01,&HF0,&H03,&HF0
  406. 14199 DATA &H07,&HC0,&H00,&H00,&H00,&H00,&H00,&H00
  407. 14200 '
  408. 14210 *MCDRAG 'ドラッグ -----------------------------------------------
  409. 14220  MOUSE 1,X_M,Y_M,1                            :'現在位置にカーソルを設定
  410. 14225  MD_XB1=W_X1(G):MD_YB1=W_Y1(G) :MD_XC1=W_X1(G):MD_YC1=W_Y1(G) :'旧ウインドウ座標保持
  411. 14230  MD_XB2=W_X2(G):MD_YB2=W_Y2(G) :MD_XC2=W_X2(G):MD_YC2=W_Y2(G) :'旧ウインドウ座標保持
  412. 14235  GET@A(MD_XB1,MD_YB1)-(MD_XB2,MD_YB2),MD_SW#
  413. 14238  X1=X_M-W_X1(G)+W_XA(G):X2=X_M+W_XB(G)-W_X2(G):'最大移動域の設定
  414. 14239  Y1=Y_M-W_Y1(G)+W_YA(G):Y2=Y_M+W_YB(G)-W_Y2(G):'
  415. 14240  MOUSE 4,X1,Y1,X2,Y2                          :'最大移動域の設定
  416. 14245  GOSUB *MD_WLINED
  417. 14250  IF MOUSE(2,0)=-1 THEN 14245                  :'枠移動
  418. 14255   LINE(MD_XC1,MD_YC1)-(MD_XC2,MD_YC2),XOR,4,B,&HCCCC     :'枠線消去
  419. 14260  PUT@A(MD_XB1,MD_YB1)-(MD_XB2,MD_YB2),MD_SB#      :'旧ウインドウ背景表示
  420. 14265  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#  :'新ウインドウ背景保持
  421. 14270  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SW#  :'新ウインドウ描画
  422. 14275  MOUSE 4,0,0,639,479:WAIT SWAIT\4+1:RETURN
  423. 14280 *MD_WLINED
  424. 14285  MD_X_M=MOUSE(9) :MD_Y_M=MOUSE(10)                :'移動量取得
  425. 14290  W_X1(G)=W_X1(G)+(MD_X_M):W_Y1(G)=W_Y1(G)+(MD_Y_M):'新座標計算
  426. 14295  W_X2(G)=W_X2(G)+(MD_X_M):W_Y2(G)=W_Y2(G)+(MD_Y_M)
  427. 14300  LINE(MD_XC1 ,MD_YC1 )-(MD_XC2 ,MD_YC2 ),XOR,4,B,&HCCCC  :'枠線移動
  428. 14305  LINE(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),XOR,4,B,&HCCCC
  429. 14310  MD_XC1=W_X1(G):MD_YC1=W_Y1(G)
  430. 14315  MD_XC2=W_X2(G):MD_YC2=W_Y2(G)
  431. 14320  RETURN
  432. 14400 '------------------------------------------------------------------
  433. 14405 *ボタン座標読み取り
  434. 14410  RESTORE *ボタン座標:READ SWGN
  435. 14415  FOR G=1 TO SWGN
  436. 14420    READ SWN(G), W_X1(G),W_X2(G),W_Y1(G),W_Y2(G), W_XA(G),W_XB(G),W_YA(G),W_YB(G)
  437. 14425    FOR B=1 TO SWN(G):READ B_X1(G,B),B_X2(G,B),B_Y1(G,B),B_Y2(G,B):NEXT B
  438. 14430  NEXT G
  439. 14435  RETURN
  440. 14500 '-----------------------------------------------------------------
  441. 14505 *BTN_ONOFF:'ボタンON_OFF表示
  442. 14510  IF BST(G,B)=1 THEN BSC=15:BSB=1:GOTO 14520
  443. 14515                     BSC=1:BSB=15
  444. 14520   X1=W_X1(G)+B_X1(G,B):X2=W_X1(G)+B_X2(G,B)
  445. 14521   Y1=W_Y1(G)+B_Y1(G,B):Y2=W_Y1(G)+B_Y2(G,B)
  446. 14522   CONNECT(X1,Y2)-(X2,Y2)-(X2,Y1),%BSC,PSET
  447. 14523   CONNECT(X1,Y2)-(X1,Y1)-(X2,Y1),%BSB,PSET
  448. 14530  IF BSNDOFF=1 THEN 14540 :'                 WAIT SWAIT\10+1:GOTO 14540
  449. 14535  IF BST(G,B)=1 THEN SMSGPLAY 0:WAIT SWAIT\5+1
  450. 14540  BSNDOFF=0:RETURN
  451. 14600 '-----------------------------------------------------------------
  452. 14610 *MCSELECT:'マウスボタン選択
  453. 14620  SWERC=0:SWNO=0                         :'リセット
  454. 14630 *クリック待ち
  455. 14640  IF MOUSE(2,0)=-1 THEN 14680            :'左クリック入力待ち
  456. 14650  IF MOUSE(2,1)=-1 THEN SWNO=-1:RETURN   :'右クリックで終了
  457. 14660  IF MCKEY=1 THEN GOTO 14830             :'MCKEY=1: マウススキャン中断、キー入力受付
  458. 14670  GOTO *クリック待ち
  459. 14680  X_M=MOUSE(4,0):Y_M=MOUSE(5,0)          :'座標取得
  460. 14690  FOR IMS=1 TO SWN(G)                    :'ボタン座標判定
  461. 14700    IF (X_M>W_X1(G)+B_X1(G,IMS)) AND (X_M<W_X1(G)+B_X2(G,IMS)) ELSE 14730
  462. 14710    IF (Y_M>W_Y1(G)+B_Y1(G,IMS)) AND (Y_M<W_Y1(G)+B_Y2(G,IMS)) ELSE 14730
  463. 14720    SWNO=IMS:IMS=SWN(G)+1
  464. 14730  NEXT IMS
  465. 14735  WAIT SWAIT\8+1 'FOR II=1 TO 500:NEXT II
  466. 14740  IF (SWPASS=1) OR (SWNO<>0) THEN 14830
  467. 14750  IF SWNO=0 THEN
  468. 14760     GOSUB *MCMIS:SWERC=SWERC+1           '誤指定警告表示
  469. 14770     IF SWERC>5 THEN
  470. 14780       MCN=3:GOSUB *MCDSET:MESN=12:GOSUB *SNDMSG            '誤指定警告音声案内
  471. 14790       MCN=1:GOSUB *MCDSET
  472. 14800     ENDIF
  473. 14810  ENDIF
  474. 14820  GOTO *クリック待ち
  475. 14830  SWPASS=0:SW1T=0:MCKEY=0
  476. 14840  RETURN
  477. 14850 *MCMIS
  478. 14860  MCN=3:GOSUB *MCDSET:WAIT SWAIT\3+1:MCN=1:GOSUB *MCDSET
  479. 14870  RETURN
  480. 14880 '
  481. 14890 '
  482. 15000 '
  483. 15010 '  SAVE"TCLOCK.sub"             :'   組み込み型 アナログ時計 V1.1
  484. 15020 '                                       1991.05 T.KOMURA 
  485. 15030 '--------------------------------------------------------------------
  486. 15040 '
  487. 15220 *時計表示:'///////////////////////////////////
  488. 15230  XCLK0=579:YCLK0=11:CLKR=9:PI=3.1415!
  489. 15240  TIMEX$=TIME$:IF DATE$<>DATX$ THEN GOSUB *本日の日付
  490. 15250  TSC$=MID$(TIMEX$,7,2):SCR=2*PI*(VAL(TSC$)/60)
  491. 15260  TMN$=MID$(TIMEX$,4,2):MNR=2*PI*(VAL(TMN$)/60)
  492. 15270  THR$=LEFT$(TIMEX$,2) :HRR=2*PI*((VAL(THR$)*60+VAL(TMN$))/720)
  493. 15280  GOSUB *短針表示
  494. 15290  GOSUB *長針表示
  495. 15300  GOSUB *秒針表示
  496. 15305  IF DCLOCKF=1 THEN GOSUB *DCLOCKD
  497. 15310  CLOCKINIT=1:DATX$=DATE$
  498. 15320  RETURN
  499. 15330 '
  500. 15340 *短針表示
  501. 15350  XHD1=XCLK0+(CLKR*.6!)*SIN(HRR):XHD2=XCLK0
  502. 15360  YHD1=YCLK0-(CLKR*.6!)*COS(HRR):YHD2=YCLK0
  503. 15370  IF CLOCKINIT=0 THEN 15400
  504. 15380  IF SCR<>0 THEN 15420
  505. 15390  LINE(XHD1X,YHD1X)-(XHD2X,YHD2X),XOR,6
  506. 15400  LINE(XHD1 ,YHD1 )-(XHD2 ,YHD2 ),XOR,6
  507. 15410  XHD1X=XHD1:YHD1X=YHD1:XHD2X=XHD2:YHD2X=YHD2
  508. 15420  RETURN
  509. 15430 *長針表示
  510. 15440  XMD1=XCLK0+(CLKR*.8!)*SIN(MNR):XMD2=XCLK0
  511. 15450  YMD1=YCLK0-(CLKR*.8!)*COS(MNR):YMD2=YCLK0
  512. 15460  IF CLOCKINIT=0 THEN 15490
  513. 15470  IF SCR<>0 THEN 15510
  514. 15480  LINE(XMD1X,YMD1X)-(XMD2X,YMD2X),XOR,7
  515. 15490  LINE(XMD1 ,YMD1 )-(XMD2 ,YMD2 ),XOR,7
  516. 15500  XMD1X=XMD1:YMD1X=YMD1:XMD2X=XMD2:YMD2X=YMD2
  517. 15510  RETURN
  518. 15520 *秒針表示
  519. 15530  XSD1=XCLK0+(CLKR)*SIN(SCR):XSD2=XCLK0:'+(CLKR-10)*SIN(SCR)
  520. 15540  YSD1=YCLK0-(CLKR)*COS(SCR):YSD2=YCLK0:'-(CLKR-10)*COS(SCR)
  521. 15550  IF CLOCKINIT=0 THEN 15570
  522. 15560  LINE(XSD1X,YSD1X)-(XSD2X,YSD2X),XOR,4
  523. 15570  LINE(XSD1 ,YSD1 )-(XSD2 ,YSD2 ),XOR,4
  524. 15580  XSD1X=XSD1:YSD1X=YSD1:XSD2X=XSD2:YSD2X=YSD2
  525. 15590  RETURN
  526. 15600 '////////////////////////////////////////////////////////////////////
  527. 15605 ' DIGITAL CLOCK v1.0 1995.05.24 T.Komura
  528. 15610 *DCLOCKREAD:'プログラム先頭で実施
  529. 15615  RESTORE *DCLOCKDATA
  530. 15620  FOR DGII=0 TO 9:FOR DGN=1 TO 7:READ DGP(DGII,DGN):NEXT:NEXT 
  531. 15625  FOR DGII=1 TO 9:READ DGX(DGII),DGY(DGII):NEXT
  532. 15630  FOR DGII=1 TO 4:READ DGO(DGII):NEXT
  533. 15635  RETURN
  534. 15640 *DGCLOCK:'デジタル時計 -------------------------------
  535. 15645  G=6:SWNOX=SWNO:DGINIT=0:DGFC=15:DGBC=1
  536. 15650  GOSUB *DCLOCKLOAD:GOSUB *DCLOCKD:DCLOCKF=1
  537. 15655 *DGMCSEL
  538. 15660  GOSUB *MCSELECT:'マウスボタン選択
  539. 15665  IF SWNO=0 THEN *DGMCSEL
  540. 15670  IF SWNO<0 THEN SWNO=1:'右クリックで終了
  541. 15675 '             end  drag
  542. 15680  ON SWNO GOTO *DGS01,*DGS02 
  543. 15685 *DGS02:'drag
  544. 15690  DCLOCKF=0
  545. 15692  GOSUB *MCDRAG
  546. 15694  DCLOCKF=1
  547. 15695  GOTO *DGMCSEL
  548. 15700 *DGS01:'end
  549. 15705  B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  550. 15710  DCLOCKF=0
  551. 15715  GOSUB *DCLOCKCLR
  552. 15720  SWNO=SWNOX
  553. 15725  RETURN
  554. 15730 *DCLOCKLOAD
  555. 15735  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  556. 15740  MOUSE 1,,,0
  557. 15745  LOAD@ TIFDRV$+"\dclock.tif",(W_X1(G),W_Y1(G)):MOUSE 1,,,1
  558. 15750  MOUSE 1,,,1:RETURN
  559. 15760 *DCLOCKCLR
  560. 15765  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  561. 15770  RETURN
  562. 15775 '
  563. 15780 *DCLOCKD
  564. 15785  IF DGINIT=1 THEN 15795
  565. 15790  FOR DGII=1 TO 4:DGM(DGII)=10:NEXT DGII:DGINIT=1
  566. 15795  DG(1)=VAL(MID$(TIME$,1,1)):DG(2)=VAL(MID$(TIME$,2,1))
  567. 15800  DG(3)=VAL(MID$(TIME$,4,1)):DG(4)=VAL(MID$(TIME$,5,1))
  568. 15805  DGPT=1-DGPT
  569. 15810  FOR DGII=1 TO 4
  570. 15815    IF DG(DGII)=DGM(DGII) THEN 15840
  571. 15820    FOR DGJJ=1 TO 7
  572. 15825      IF DGP(DG(DGII),DGJJ)=1 THEN DGC=DGFC ELSE DGC=DGBC
  573. 15826      IF DGII=1 AND DG(1)=0 THEN DGC=DGBC
  574. 15830      PAINT(W_X1(G)+DGX(DGJJ)+DGO(DGII),W_Y1(G)+DGY(DGJJ)),%DGC,0
  575. 15835    NEXT DGJJ
  576. 15840  NEXT DGII
  577. 15841      IF DGPT=1 THEN DGC=10 ELSE DGC=DGBC
  578. 15842      PAINT(W_X1(G)+DGX(8),W_Y1(G)+DGY(8)),%DGC,0
  579. 15843      PAINT(W_X1(G)+DGX(9),W_Y1(G)+DGY(9)),%DGC,0
  580. 15845  FOR DGII=1 TO 4:DGM(DGII)=DG(DGII):NEXT DGII'
  581. 15850  RETURN
  582. 15855 '
  583. 18000 '------------------------------------------------------------------
  584. 18005 *HKHELP:'             Copyrigit(C) T.Komura / HK2               /
  585. 18010 '   Version 1.0  1994.07.30                 / helpプログラム    /
  586. 18011 '   Version 2.0  1995.07.30 HK2ドラッグ対応
  587. 18015 'メインルーチン:'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  588. 18016 G=5:SWNOX=SWNO:DOCDC=6:DOCBC=8
  589. 18020 GOSUB *DOCTIFDSP:GOSUB *DOCFREAD
  590. 18026 MCN=1:GOSUB *MCDSET
  591. 18030 GOSUB *DOC初期表示
  592. 18035 *DC_MSINSEL
  593. 18040 SWPASS=1:GOSUB *MCSELECT:'マウスボタン選択
  594. 18042 IF SWNO=0 THEN GOSUB *DC_他エリア判定
  595. 18043 IF SWNO<0 THEN SWNO=5:'右クリックで終了
  596. 18045 IF SWNO>7 OR SWNO=0 THEN *DC_MSINSEL
  597. 18050 IF SWNO=5 THEN GOTO *SDC_05
  598. 18055 IF SWNO=6 THEN GOTO *SDC_06
  599. 18060 IF SWNO=7 THEN GOTO *SDC_07
  600. 18065                GOTO *DOCCTRL
  601. 18070 *DOCCTRL
  602. 18075  B=SWNO:BST(G,B)=1:BSNDOFF=1:GOSUB *BTN_ONOFF
  603. 18080   DCCD=SWNO:GOSUB *DOC表示制御
  604. 18085  B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  605. 18090  GOTO *DC_MSINSEL
  606. 18095 *SDC_06:       GOSUB *MCDRAG     :GOTO *DC_MSINSEL
  607. 18100 *SDC_07:DCCD=5:GOSUB *DOC表示制御:GOTO *DC_MSINSEL
  608. 18105 *SDC_05:'終了
  609. 18110  B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  610. 18115  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  611. 18120  DOCCS=0:SWNO=SWNOX
  612. 18122  RETURN:'///////////////////////////////////////////////////
  613. 18125 '
  614. 18130 'sub routine---------------------------------------------
  615. 18135 *DOCTIFDSP
  616. 18137  MOUSE 1,,,0
  617. 18140  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  618. 18145  LOAD@ TIFDRV$+"\hk2help.tif",(W_X1(G),W_Y1(G))
  619. 18165  MOUSE 1,,,1:GOSUB *DOC名称表示
  620. 18170  RETURN
  621. 18175 *DOCFREAD:'helpファイル読み込み
  622. 18177  MCN=2:GOSUB *MCDSET
  623. 18180  DOCN=0:OPEN "I",#1,PRGDRV$+"\HELPF"+DOCF$
  624. 18185  IF EOF(1)=-1 THEN 18200
  625. 18190  DOCN=DOCN+1:LINE INPUT #1,DOC$(DOCN)
  626. 18195  GOTO 18185
  627. 18200  CLOSE #1:RETURN
  628. 18205 *DOC指定行表示
  629. 18210  GOSUB *DOCカーソル表示
  630. 18220  FOR DN=SDN TO EDN
  631. 18225    XDC=W_X1(G)+8:YDC=W_Y1(G)+27+DCL*12
  632. 18230    SYMBOL(XDC,YDC),DOC$(DN),.75!,.75!,7
  633. 18235    DCL=DCL+1
  634. 18240  NEXT DN:RETURN
  635. 18245 *DOC初期表示
  636. 18250  SDN=1:EDN=24:DCL=0:DSP=1:GOSUB *DOC指定行表示
  637. 18255  RETURN
  638. 18260 *DOC表示制御:'///////////////////////////////////////
  639. 18265  ON DCCD GOTO *DCC3,*DCC1,*DCC2,*DCC4,*DCC5
  640. 18270 *DCC1:'------ 前行
  641. 18275  DSP=DSP-1 :IF DSP<1 THEN DSP=1          :RETURN
  642. 18280  SDN=DSP   :GOSUB *DOC下シフト
  643. 18285  EDN=SDN   :DCL=0 :GOSUB *DOC指定行表示  :RETURN
  644. 18290 *DCC2:'------ 次行
  645. 18295  DSP=DSP+1 :IF DSP+23>DOCN THEN DSP=DSP-1:RETURN
  646. 18300  SDN=DSP+23: GOSUB *DOC上シフト
  647. 18305  EDN=SDN   :DCL=23:GOSUB *DOC指定行表示  :RETURN
  648. 18310 *DCC3:'------ 前頁
  649. 18315  DSP=DSP-24:IF DSP<1 THEN DSP=1
  650. 18320  GOTO *DCC51
  651. 18325 *DCC4:'------ 次頁
  652. 18330  DSP=DSP+24:IF DSP>DOCN THEN DSP=(DOCN\24)*24+1
  653. 18335  GOTO *DCC51
  654. 18340 *DCC5:'------ カーソル指定
  655. 18345  DSP=((INT(DOCN*DOCR))\24)*24+1
  656. 18350  IF DSP>DOCN THEN DSP=(DOCN\24)*24+1
  657. 18355 *DCC51
  658. 18360  SDN=DSP   :EDN=SDN+23
  659. 18365  IF EDN>DOCN THEN EDN=EDN-1:GOTO 18365
  660. 18370  LINE (W_X1(G)+6,W_Y1(G)+27)-(W_X1(G)+492,W_Y1(G)+27+12*24),PSET,%DOCBC,BF
  661. 18375  DCL=0:GOSUB *DOC指定行表示              :RETURN
  662. 18380 '------------------------------------------------------
  663. 18385 *DOC上シフト
  664. 18386  X1=W_X1(G)+6:Y1=W_Y1(G)+27 :X2=W_X1(G)+492:Y2=Y1
  665. 18390  GET@A(X1,Y1+12*1 )-(X2,Y2+12*24),HLPC#
  666. 18395  LINE (X1,Y1+12*23)-(X2,Y2+12*24),PSET,%DOCBC,BF
  667. 18400  PUT@A(X1,Y1      )-(X2,Y2+12*23),HLPC#
  668. 18405  RETURN
  669. 18410 *DOC下シフト
  670. 18411  X1=W_X1(G)+6:Y1=W_Y1(G)+27 :X2=W_X1(G)+492:Y2=Y1
  671. 18415  GET@A(X1,Y1     )-(X2,Y2+12*23),HLPC#
  672. 18420  LINE (X1,Y1     )-(X2,Y2+12*1 ),PSET,%DOCBC,BF
  673. 18425  PUT@A(X1,Y1+12*1)-(X2,Y2+12*24),HLPC#
  674. 18430  RETURN
  675. 18435 *DOCカーソル表示
  676. 18440  XDC1 =W_X1(G)+500:XDC2=W_X1(G)+511
  677. 18445  YDC1 =W_Y1(G)+53+INT(233*((DSP-1)  /DOCN))
  678. 18450  YDC2 =W_Y1(G)+53+INT(233*((DSP+23) /DOCN))
  679. 18451  A=W_Y1(G)+B_Y1(G,3):IF YDC2>=A  THEN YDC2=A-1
  680. 18455  YDC1X=W_Y1(G)+53+INT(233*((DSPX-1) /DOCN))
  681. 18460  YDC2X=W_Y1(G)+53+INT(233*((DSPX+23)/DOCN))
  682. 18461  A=W_Y1(G)+B_Y1(G,3):IF YDC2X>=A THEN YDC2X=A-1
  683. 18465  IF DOCCS=1 THEN 18470 ELSE DOCCS=1:GOTO 18475
  684. 18470  LINE(XDC1,YDC1X)-(XDC2,YDC2X),XOR,5,BF
  685. 18475  LINE(XDC1,YDC1 )-(XDC2,YDC2 ),XOR,5,BF
  686. 18480  DSPX=DSP :RETURN
  687. 18485 *DOC名称表示
  688. 18490  XDC=W_X1(G)+427:YDC=W_Y1(G)+7
  689. 18495  DOCD$=RIGHT$(DOCF$,LEN(DOCF$)-1)
  690. 18500  SYMBOL(XDC,YDC),DOCD$,.75!,.75!,%DOCDC
  691. 18505  RETURN
  692. 18810 *DC_他エリア判定
  693. 18830  IF (X_M>(W_X1(G)+499) AND X_M<(W_X1(G)+512)) ELSE 18845
  694. 18835  IF (Y_M>(W_Y1(G)+ 53) AND Y_M<(W_Y1(G)+288)) ELSE 18845
  695. 18840  DOCR=(Y_M-(W_Y1(G)+53))/235:SWNO=7
  696. 18845  RETURN
  697. 18850 '
  698. 19000 '
  699. 19010 '//////////////////////////////////////////////////////////////
  700. 19020 *ERROR:'      エラー処理サブルーチン V1.10   1990.11.08 T.Komura
  701. 19030 '             
  702. 19040 '
  703. 19050 IF ERR=53 THEN *IOERR
  704. 19060 IF ERR=63 THEN *FILNOF
  705. 19070 IF ERR=67 THEN *DSKFUL
  706. 19080 IF ERR=71 THEN *DSKUNF 
  707. 19090 IF ERR=72 THEN *DSKOFF
  708. 19100 IF ERR=73 THEN *DSKWP
  709. 19110 ERMES$="エラー行:"+STR$(ERL)+" エラー番号:"+STR$(ERR)+" 発生"
  710. 19120 GOSUB *ERMSG
  711. 19130 STOP
  712. 19140 '////////// エラー処理
  713. 19150 *IOERR
  714. 19160 ERMES$="プリンターが準備されていません。 プリンターをセット後、"
  715. 19170 GOSUB *ERMSG:RESUME
  716. 19180 *DSKFUL
  717. 19190 ERMES$="ディスクが満杯です。 交換後、"
  718. 19200 GOSUB *ERMSG:RESUME
  719. 19210 *DSKUNF
  720. 19220 ERMES$="このディスクは使用出来ません。処理を中断します。 "
  721. 19230 GOSUB *ERMSG:RESUME
  722. 19240 *DSKOFF
  723. 19250 ERMES$="ディスク装置が準備されていません。ディスクをセット後、"
  724. 19260 GOSUB *ERMSG:RESUME
  725. 19270 *DSKWP
  726. 19280 ERMES$="ディスクが書き込み禁止になっています。解除後、"
  727. 19290 GOSUB *ERMSG:RESUME
  728. 19300 *FILNOF
  729. 19310 ERMES$="ファイルが見つかりません。ディスクを交換後、"
  730. 19320 GOSUB *ERMSG:RESUME
  731. 19330 '
  732. 19340 *ERMSG:'////////// エラーメッセージ
  733. 19355 LINE(0,465)-(639,479),PSET,0,BF
  734. 19360 SYMBOL(0,465),ERMES$+"[実行]キーを押してね!",.75!,.75!,2
  735. 19370 COLOR 7,0:MESN=19:GOSUB *SNDMSG
  736. 19380 ERRA$=INKEY$:IF ERRA$="" THEN 19380
  737. 19390 IF ERRA$<>CHR$(&H0D) THEN 19380
  738. 19400 LINE(0,465)-(639,479),PSET,0,BF
  739. 19410 SYMBOL(0,465),"エラー処理を終わります。",.75!,.75!,6
  740. 19420 RETURN
  741. 19430 '
  742. 19440 '
  743. 19450 '
  744. 20000 '------------------------------------------------------------------
  745. 20010 ' CUSTOM SUB ROUTINE FOR "HKANLY.BAS"
  746. 20020 '------------------------------------------------------------------
  747. 20100 *表紙表示
  748. 20110  LOAD@ TIFDRV$+"\HK2ANL.TIF",(0,0)
  749. 20120  DEF FONT "システム   12ドット"
  750. 20140  G=1:B=4:BST(G,B)=1:BSNDOFF=1:GOSUB *BTN_ONOFF
  751. 20145 ' INTERVAL ON
  752. 20155  GET@A(0,55)-(639,465),ANLW#
  753. 20160  RETURN
  754. 20190 '
  755. 20200 *分析年月表示
  756. 20205  G=2:DEF FONT "システム   16ドット"
  757. 20210  SRYR$=RIGHT$(STR$(SRYR),4)
  758. 20215  NBN=4:NBA$=SRYR$:GOSUB *数字漢字変換:KYR$=NBK$
  759. 20220  SRMN$=RIGHT$(STR$(100+SRMN),2)
  760. 20225  NBN=2:NBA$=SRMN$:GOSUB *数字漢字変換:KMN$=NBK$
  761. 20250  Y=W_Y1(G)+31+(ANLIN-1)*23
  762. 20260  LINE(W_X1(G)+ 89,Y)-(W_X1(G)+ 89+16*4,Y+15),PSET,%8,BF
  763. 20265  SYMBOL(W_X1(G)+ 89,Y),KYR$,1,1,7
  764. 20270  LINE(W_X1(G)+225,Y)-(W_X1(G)+225+16*2,Y+15),PSET,%8,BF
  765. 20275  SYMBOL(W_X1(G)+225,Y),KMN$,1,1,7
  766. 20276  DEF FONT "システム   12ドット"
  767. 20280  RETURN
  768. 20290 '
  769. 20300 *モード選択
  770. 20304  SMODSEL=0
  771. 20305  G=3:SWNOX=SWNO:SMODC=7:GOSUB *分析モード表示
  772. 20310  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  773. 20315  MOUSE 1,,,0
  774. 20320  LOAD@ TIFDRV$+"\HK2ANLc.tif",(W_X1(G),W_Y1(G))
  775. 20325  MOUSE 1,,,1
  776. 20350  SWPASS=0:GOSUB *MCSELECT
  777. 20360  IF SWNO<0 THEN SWNO=1
  778. 20362  IF SWNO=2 THEN GOSUB *MCDRAG:GOTO 20350
  779. 20364  IF SWNO=0 THEN               GOTO 20350
  780. 20366  IF SWNO=1 THEN 20420
  781. 20368 '
  782. 20380  B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  783. 20390  SMODE=SWNO-2:SMODSEL=1:WAIT SWAIT/2
  784. 20400  SMODC=15:GOSUB *分析モード表示
  785. 20410  GOTO 20450
  786. 20420  B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  787. 20450  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  788. 20455  SWNO=SWNOX
  789. 20460  RETURN
  790. 20490 '
  791. 20590 '
  792. 20600 *分析モード表示
  793. 20620  LINE(126,34)-(236,47),PSET,0,BF
  794. 20630  SYMBOL(126,35),SMODE$(SMODE),.75!,.75!,%SMODC
  795. 20640  RETURN
  796. 20650 *分析結果画面消去
  797. 20660  PUT@A(0,55)-(639,465),ANLW#
  798. 20670  RETURN
  799. 20690 '
  800. 20700 *分析条件枠表示
  801. 20705  G=2
  802. 20710  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  803. 20715  MOUSE 1,,,0:LOAD@ TIFDRV$+"\HK2ANLS.TIF",(W_X1(G),W_Y1(G)):MOUSE 1,,,1
  804. 20720  SYMBOL(W_X1(G)+89,W_Y1(G)+9),SMODE$(SMODE),.75!,.75!,0
  805. 20722  FOR II=1 TO 15:IF II>3 AND II<8 THEN C=1 ELSE C=0
  806. 20724    X=W_X1(G)+90+46*INT((II-1)/3):Y=W_Y1(G)+84+17*((II-1) MOD 3)
  807. 20726    SYMBOL(X,Y),CFI$(II),.75!,.75!,C
  808. 20728  NEXT II
  809. 20730  FOR II=1 TO 3
  810. 20732    IF SMOPT(SMODE,II)=0 THEN 20738 
  811. 20733    IF II=3 THEN YO=39 ELSE YO=33
  812. 20734    SYMBOL(W_X1(G)+15,W_Y1(G)+YO+(II-1)*23),"●",.75!,.75!,7
  813. 20738  NEXT II
  814. 20740  RETURN
  815. 20750 *分析条件枠消去
  816. 20760  FOR II=1 TO 5
  817. 20762    LOCATE 28,9+II-1:PRINT SPACE$(40);
  818. 20764  NEXT II
  819. 20770  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),MD_SB#
  820. 20785  RETURN
  821. 20790 '
  822. 20800 *分析条件読み込み
  823. 20805 ' MESN=4:GOSUB *MESDSP
  824. 20810  GOSUB *ANLSGET
  825. 20820  SRYR=SR1YR:SRMN=SR1MN:ANLIN=1:GOSUB *分析年月表示
  826. 20825  YRS=SRYR:MNS=SRMN
  827. 20830  SRYR=SR2YR:SRMN=SR2MN:ANLIN=2:GOSUB *分析年月表示
  828. 20835  YRE=SRYR:MNE=SRMN
  829. 20870  SX8=0:SX8X=SX8:SX$(8)=SPACE$(2):SITM=0
  830. 20890  RETURN
  831. 20895 '
  832. 20900 *分析条件保存
  833. 20905 ' MESN=5:GOSUB *MESDSP
  834. 20910  GOSUB *ANLSPUT
  835. 20920  RETURN
  836. 20930 '
  837. 21000 *分析条件設定
  838. 21005  SWNOX=SWNO
  839. 21010  GOSUB *分析条件枠表示
  840. 21020  GOSUB *分析条件読み込み
  841. 21030  MESN=3:GOSUB *MESDSP:MESN=20:GOSUB *SNDMSG
  842. 21040  G=2:GOSUB *MCSELECT
  843. 21045  IF SWNO<0  THEN SWNO=2
  844. 21050  IF SWNO>11 THEN *ANLS項目選択
  845. 21055  IF SWNO=11 THEN GOSUB *MCDRAG:GOTO 21040
  846. 21060  ON SWNO GOTO *SI01,*SI02,*SI03,*SI04,*SI05,*SI06,*SI07,*SI08,*SI09,*SI10
  847. 21070 '//////////////////////////////////////////////////////////////
  848. 21080  *SI03:YDEF=+1:MDEF= 0:GOTO 21120
  849. 21090  *SI04:YDEF=-1:MDEF= 0:GOTO 21120
  850. 21100  *SI05:YDEF= 0:MDEF=+1:GOTO 21120
  851. 21110  *SI06:YDEF= 0:MDEF=-1:GOTO 21120
  852. 21120   G=2:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  853. 21130   ANLIN=1:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21170
  854. 21140   YR=SR1YR:MN=SR1MN:DDEF=0:GOSUB *年月日変更:SR1YR=YR:SR1MN=MN
  855. 21150   SX$(1)=YR$:SX$(2)=MN$:YRS=YR:MNS=MN
  856. 21160   SRYR=SR1YR:SRMN=SR1MN:GOSUB *分析年月表示
  857. 21170   G=2:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  858. 21180   GOTO 21040
  859. 21190  *SI07:YDEF=+1:MDEF= 0:GOTO 21230
  860. 21200  *SI08:YDEF=-1:MDEF= 0:GOTO 21230
  861. 21210  *SI09:YDEF= 0:MDEF=+1:GOTO 21230
  862. 21220  *SI10:YDEF= 0:MDEF=-1:GOTO 21230
  863. 21230   G=2:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  864. 21240   ANLIN=2:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21280
  865. 21250   YR=SR2YR:MN=SR2MN:DDEF=0:GOSUB *年月日変更:SR2YR=YR:SR2MN=MN
  866. 21260   SX$(3)=YR$:SX$(4)=MN$:YRE=YR:MNE=MN
  867. 21270   SRYR=SR2YR:SRMN=SR2MN:GOSUB *分析年月表示
  868. 21280   G=2:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  869. 21290   GOTO 21040
  870. 21300  *ANLS項目選択
  871. 21310   ANLIN=3:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21370
  872. 21320   SX8=SWNO:IF SX8X=0 THEN 21340
  873. 21330   G=2:B=SX8X:BST(G,B)=0:GOSUB *BTN_ONOFF
  874. 21340   G=2:B=SX8 :BST(G,B)=1:GOSUB *BTN_ONOFF
  875. 21350   SX8X=SX8
  876. 21360   SX$(8)=RIGHT$(STR$(SX8-11),2):SITM=VAL(SX$(8))
  877. 21370   GOTO 21040
  878. 21380  *SELERR
  879. 21390   MESN=6:GOSUB *MESDSP:MESN=13:GOSUB *SNDMSG
  880. 21400   FOR II=1 TO 5000:NEXT II
  881. 21410   MESN=3:GOSUB *MESDSP
  882. 21420   RETURN
  883. 21430  *SI01'
  884. 21440   G=2:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  885. 21450   GOSUB *分析条件合理性判定
  886. 21460   IF ANLCDF=0 THEN *SIRETRY
  887. 21470   GOTO *SIEND
  888. 21540  *SIRETRY
  889. 21550   G=2:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  890. 21560   GOTO 21040
  891. 21570  *SI02'
  892. 21580   G=2:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  893. 21590   ANLCAN=1
  894. 21620   GOTO 21660
  895. 21630  *SIEND
  896. 21640   ANLCAN=0
  897. 21650   GOSUB *分析条件保存
  898. 21660   GOSUB *分析条件枠消去
  899. 21665   SWNO=SWNOX
  900. 21670   RETURN
  901. 21730 '
  902. 21740 *分析条件表示
  903. 21745  IF SMOPT(SMODE,3)=0 THEN 21760
  904. 21748  LINE(123,60)-(255,75),PSET,1,BF
  905. 21750  SYMBOL(128,62),"分析項目:",.75!,.75!,7,,,&H01
  906. 21755  SYMBOL(198,62),ITEM$(SITM),.75!,.75!,0,,,&H01
  907. 21760  IF SMOPT(SMODE,2)=0 THEN 21780
  908. 21770  ANLYM$=SX$(1)+"."+SX$(2)+"→"+SX$(3)+"."+SX$(4):GOTO 21790
  909. 21780  ANLYM$=SX$(1)+"."+SX$(2)+"→"+SX$(1)+"."+SX$(2)
  910. 21790  LINE(430,36)-(530,48),PSET,%8,BF
  911. 21795  SYMBOL(432,37),ANLYM$,.75!,.75!,4
  912. 21800  RETURN
  913. 21810 '
  914. 21820 *分析条件消去
  915. 21825  PUT@A(0,55)-(639,465),ANLW#
  916. 21830  LINE(430,36)-(530,48),PSET,%8,BF
  917. 21840  RETURN
  918. 21850 '
  919. 21860 *分析年月日更新
  920. 21870  'IF SMODE=4 THEN ANLCNT=0:RETURN
  921. 21880  YR=YRM:MN=MNM:YDEF=0:MDEF=+1:DDEF=0
  922. 21890  GOSUB *年月日変更
  923. 21900  IF (YR*12+MN)<=(YRE*12+MNE) THEN 21920
  924. 21910  ANLCNT=0:RETURN
  925. 21920  IYM$=YR$+MN$
  926. 21930  ANLCNT=1
  927. 21940  RETURN
  928. 21950 '
  929. 22000 *AN01:'//////////////////// [月間合計額推移]
  930. 22005  MCN=2:GOSUB *MCDSET
  931. 22010  X0=88:Y0=128:XP=44:YP=12:LINEC=5
  932. 22021  FOR II=1 TO 23 STEP 2
  933. 22022    LINE(X0,Y0+YP*II+1)-(X0+XP*11,Y0+YP*(II+1)),PSET,%3,BF
  934. 22023  NEXT II
  935. 22024  FOR II=1 TO 10
  936. 22025    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*24),PSET,%LINEC,,&HAAAA
  937. 22026  NEXT II
  938. 22027  LINE(X0,Y0)-(X0+XP*11,Y0),PSET,%LINEC
  939. 22028  LINE(X0,Y0)-(X0,Y0+YP*24),PSET,%LINEC
  940. 22030  SYMBOL(44,116),"年.月",.75!,.75!,%15
  941. 22035  SYMBOL(578,116),"[\]",.75!,.75!,%15
  942. 22100 '-------------------- データ読み込み
  943. 22105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  944. 22110  SCN=1:GOSUB *グラフデータ初期化
  945. 22120  IYM$=YRS$+MNS$:GDN=1
  946. 22125  GOSUB *ITM変換
  947. 22130  GOSUB *統計データ読みだし
  948. 22132  GDYM$=YRM$+"."+MNM$
  949. 22135  SYMBOL(X0-60,Y0+YP*(GDN-1)+2),GDYM$,.75!,.75!,7,,,,1
  950. 22140  IF FIDX=0 THEN 22160
  951. 22150    GDT#(1,GDN)=MX#(GITM)
  952. 22155    TGDT#=TGDT#+GDT#(1,GDN)
  953. 22160  GOSUB *分析年月日更新
  954. 22170  IF ANLCNT=0 THEN 22200
  955. 22180  GDN=GDN+1:GOTO 22130
  956. 22200 '-------------------- グラフ作成
  957. 22210  GDMAX=GDN
  958. 22220  GOSUB *スケール検出
  959. 22230  FOR II=0 TO 10 STEP 2
  960. 22232    SCAL$=LEFT$(STR$((SCAL#(1)/10)*II)+SPACE$(8),8)
  961. 22234    SYMBOL(X0+XP*II-6,Y0-12),SCAL$,.75!,.75!,7
  962. 22236  NEXT II
  963. 22238  MESH$=MESH$(13)
  964. 22240  FOR GDN=1 TO GDMAX
  965. 22250    XG=X0+(GDT#(1,GDN)/SCAL#(1))*XP*10
  966. 22260    LINE(X0,Y0+YP*GDN-10)-(XG,Y0+YP*GDN-1),PSET,0,BF,MESH$
  967. 22270    SYMBOL(XG,Y0+YP*GDN-10),STR$(GDT#(1,GDN)),.75!,.75!,6,,,&H02
  968. 22280  NEXT GDN
  969. 22290  LINE(257,60)-(405,75),PSET,7,BF
  970. 22300  SYMBOL(263,62),"総合計:\"+STR$(TGDT#),.75!,.75!,0,,,&H01
  971. 22470  GOSUB *画面フラッシュ
  972. 22475  MCN=1:GOSUB *MCDSET
  973. 22480 RETURN
  974. 22490 '
  975. 22500 *AN02:'//////////////////// [月間合計額累積]
  976. 22505  MCN=2:GOSUB *MCDSET
  977. 22510  X0=88:Y0=372:XP=20:YP=-24:LINEC=5
  978. 22520  LINE(X0,Y0)-(X0+XP*24,Y0),PSET,%LINEC
  979. 22521  LINE(X0-12,Y0+8)-(X0+XP*24-12,Y0+8),PSET,%LINEC
  980. 22525  LINE(X0,Y0)-(X0,Y0+YP*10),PSET,%LINEC
  981. 22526  LINE(X0-12,Y0+8)-(X0-12,Y0+YP*10+8),PSET,%LINEC
  982. 22530  FOR II=1 TO 24
  983. 22532    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,%LINEC,,&HCCCC
  984. 22533    LINE(X0+XP*II,Y0)-(X0+XP*II-12,Y0+8),PSET,%LINEC
  985. 22534  NEXT II
  986. 22536  FOR II=0 TO 10
  987. 22538    LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,%LINEC,,&HAAAA
  988. 22539    LINE(X0,Y0+YP*II)-(X0-12,Y0+YP*II+8),PSET,%LINEC
  989. 22540  NEXT II
  990. 22550  SYMBOL(24,108),"累積額[\]",.75!,.75!,7
  991. 22555  SYMBOL(40,95),"月額[\]",.75!,.75!,%5
  992. 22560  SYMBOL(576,372),"年.月",.75!,.75!,%5
  993. 22600 '-------------------- データ読み込み
  994. 22605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  995. 22610  SCN=2:GOSUB *グラフデータ初期化
  996. 22620  IYM$=YRS$+MNS$:GDN=1
  997. 22625  GOSUB *ITM変換
  998. 22630  GOSUB *統計データ読みだし
  999. 22632  GDYM$=YRM$+"."+MNM$
  1000. 22633  XS=X0+XP*(GDN-1)-16:YS=Y0+((GDN-1) MOD 3)*12+10
  1001. 22635  SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
  1002. 22640  IF FIDX=0 THEN 22660
  1003. 22650    GDT#(1,GDN)=MX#(GITM)
  1004. 22651    GDT#(2,GDN)=GDT#(2,GDN-1)+MX#(GITM)
  1005. 22655    TGDT#=TGDT#+GDT#(1,GDN)
  1006. 22660  GOSUB *分析年月日更新
  1007. 22670  IF ANLCNT=0 THEN 22700
  1008. 22680  GDN=GDN+1:GOTO 22630
  1009. 22700 '-------------------- グラフ作成
  1010. 22710  GDMAX=GDN
  1011. 22720  GOSUB *スケール検出
  1012. 22730  FOR II=0 TO 10 STEP 2
  1013. 22732    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*II),8)
  1014. 22733    SCAL$(2)=RIGHT$(SPACE$(8)+STR$((SCAL#(2)/10)*II),8)
  1015. 22734    SYMBOL(X0-54,Y0-11+YP*II),SCAL$(1),.75!,.75!,%5
  1016. 22735    SYMBOL(X0-66,Y0+YP*II),SCAL$(2),.75!,.75!,7
  1017. 22736  NEXT II
  1018. 22738  MESH1$=MESH$(13)
  1019. 22739  MESH2$=MESH$(3)
  1020. 22740  FOR GDN=1 TO GDMAX
  1021. 22750    YG=Y0+(GDT#(1,GDN)/SCAL#(1))*YP*10
  1022. 22755    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG),PSET,%0,BF
  1023. 22760    LINE(X0+XP*GDN-19,Y0+2)-(X0+XP*GDN-7,YG+2),PSET,0,BF,%5
  1024. 22765    YG=Y0+(GDT#(2,GDN)/SCAL#(2))*YP*10
  1025. 22770    X1=X0+XP*(GDN-1)- 6:Y1=YG+4
  1026. 22771    X2=X0+XP*(GDN  )- 6:Y2=YG+4
  1027. 22772    X3=X0+XP*(GDN  )-12:Y3=YG+8
  1028. 22773    X4=X0+XP*(GDN-1)-12:Y4=YG+8
  1029. 22774    CONNECT(X1,Y1)-(X2,Y2)-(X3,Y3)-(X4,Y4)-(X1,Y1),7,PSET,F,MESH$(6)
  1030. 22775    LINE(X2,Y2)-(X2,Y0+4),PSET,7
  1031. 22776    LINE(X3,Y3)-(X3,Y0+8),PSET,7
  1032. 22777    LINE(X4,Y4)-(X4,Y0+8),PSET,7
  1033. 22780  NEXT GDN
  1034. 22790  LINE(257,60)-(405,75),PSET,7,BF
  1035. 22900  SYMBOL(263,62),"総合計:\"+STR$(TGDT#),.75!,.75!,0,,,&H01
  1036. 22970  GOSUB *画面フラッシュ
  1037. 22975  MCN=1:GOSUB *MCDSET
  1038. 22980 RETURN
  1039. 22990 '
  1040. 23000 *AN03:'//////////////////// [日別項目別変動]
  1041. 23005  MCN=2:GOSUB *MCDSET
  1042. 23010  X0=52:Y0=280:XP=3:YP=-12:YO=150:LINEC=5
  1043. 23011  DATA 100000,100000,100000, 10000, 10000
  1044. 23012  DATA   2000, 10000, 20000, 10000, 10000
  1045. 23013  DATA  10000, 10000, 10000, 10000, 50000
  1046. 23015  RESTORE 23011:FOR II=2 TO SITM:READ SCAL#(1):NEXT II
  1047. 23020  FOR II=0 TO 1:Y0X=Y0+YO*II
  1048. 23022   LINE(X0,Y0X)-(X0+XP*31*6,Y0X),PSET,%LINEC
  1049. 23024   LINE(X0,Y0X)-(X0,Y0X+YP*10),PSET,%LINEC
  1050. 23030   FOR JJ=1 TO 10
  1051. 23032    LINE(X0,Y0+YO*II+YP*JJ)-(X0+XP*31*6,Y0+YO*II+YP*JJ),PSET,%LINEC,,&HAAAA
  1052. 23034   NEXT JJ
  1053. 23040   FOR JJ=0 TO 31*6 STEP 31
  1054. 23041    LINE(X0+XP*JJ,Y0X)-(X0+XP*JJ,Y0X+YP*10),PSET,%LINEC
  1055. 23042    LINE(X0+XP*(JJ+10),Y0X)-(X0+XP*(JJ+10),Y0X+YP*10),PSET,%LINEC,,&HAAAA
  1056. 23043    LINE(X0+XP*(JJ+20),Y0X)-(X0+XP*(JJ+20),Y0X+YP*10),PSET,%LINEC,,&HAAAA
  1057. 23045   NEXT JJ
  1058. 23050   FOR JJ=0 TO 10 STEP 2
  1059. 23052    SCAL$=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*JJ),8)
  1060. 23054    SYMBOL(X0-50,Y0X+YP*JJ-6),SCAL$,.75!,.75!,7
  1061. 23056   NEXT JJ
  1062. 23058  NEXT II
  1063. 23060  LINE(257,60)-(348,75),PSET,7,BF
  1064. 23061  LINE(350,60)-(630,75),PSET,7,BF
  1065. 23063  LINE(123,77)-(630,110),PSET,%6,BF
  1066. 23064  LINE(20,60)-(121,110),PSET,%5,BF
  1067. 23066  SYMBOL(129,81),"出来事:",.75!,.75!,0,,,&H01,4
  1068. 23100 '-------------------- データ読み込み
  1069. 23105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1070. 23110  FOR II=1 TO 366:GDYY=0:GDYM$="":NEXT II
  1071. 23120  IYM$=YRS$+MNS$:GDN=1
  1072. 23125  GOSUB *ITM変換
  1073. 23130  GOSUB *HKISRC 
  1074. 23132  GDYM$=YRM$+"."+MNM$
  1075. 23133  XS=X0+((GDN-1) MOD (31*6))*XP+8:YS=Y0+INT((GDN-1)/(31*6))*YO+4
  1076. 23135  SYMBOL(XS,YS),GDYM$,.75!,.75!,%6,,,&H01,1
  1077. 23140  IF FIDX=0 THEN 23160
  1078. 23141    FOR RDY=1 TO 31
  1079. 23145      TCALF=0:GOSUB *HKDGET
  1080. 23150      GDYY(GDN)=DYN#(GITM)
  1081. 23151      GDYM$(GDN)=YRM$+MNM$+RIGHT$(STR$(100+RDY),2)+DRM$(GITM)
  1082. 23152      GDYE$(GDN)=DEV$
  1083. 23153      GOSUB *AN03グラフ作成
  1084. 23156      GDN=GDN+1
  1085. 23158    NEXT RDY
  1086. 23160  GOSUB *分析年月日更新
  1087. 23170  IF ANLCNT=0 THEN 23200
  1088. 23180  GOTO 23130
  1089. 23200 '-------------------- データ読み取り
  1090. 23202  GOSUB *画面フラッシュ
  1091. 23203  MCN=1:GOSUB *MCDSET:SWNOX=SWNO
  1092. 23205  GDN=GDN-1:'TBS=1:GOSUB *AN03グラフ読み取り
  1093. 23210  MESN=21:GOSUB *MESDSP:MESN=18:GOSUB *SNDMSG
  1094. 23220  SWPASS=1:G=1:GOSUB *MCSELECT
  1095. 23230  IF SWNO=13 THEN *AN03END
  1096. 23235  IF SWNO=0 THEN GOSUB *シート選択判定
  1097. 23240  IF TBS=0 THEN 23220
  1098. 23242  IF TBS>GDN THEN 23220
  1099. 23244  GOSUB *AN03グラフ読み取り
  1100. 23246  GOTO 23220
  1101. 23250 *AN03グラフ読み取り
  1102. 23251  LINE(260,60)-(348,75),PSET,7,BF
  1103. 23252  LINE(350,60)-(630,75),PSET,7,BF
  1104. 23253  LINE(198,80)-(630,110),PSET,%6,BF
  1105. 23254  LINE(20,60)-(120,110),PSET,%5,BF
  1106. 23260  YRM$=MID$(GDYM$(TBS),1,4):YR=VAL(YRM$)
  1107. 23261  MNM$=MID$(GDYM$(TBS),5,2):MN=VAL(MNM$)
  1108. 23262  DYM$=MID$(GDYM$(TBS),7,2):DY=VAL(DYM$)
  1109. 23263  RMM$=MID$(GDYM$(TBS),9,52):GOSUB *週検索
  1110. 23264  SYMBOL(26,64),YRM$+"."+MNM$+"."+DYM$,.75!,.75!,0,,,&H01,1
  1111. 23265  SYMBOL(26,80),"曜日[   ]",.75!,.75!,0,,,&H01,1
  1112. 23266  IF CW=7 THEN CW=0
  1113. 23267  IF CW=5 THEN CW=1
  1114. 23268  SYMBOL(62,80),WKM$,.75!,.75!,CW,,,,1
  1115. 23270  SYMBOL(262,62),"\"+STR$(GDYY(TBS)),.75!,.75!,0,,,&H01,1
  1116. 23271  SYMBOL(352,62),RMM$,.75!,.75!,%2
  1117. 23273  SYMBOL(200,82),LEFT$(GDYE$(TBS),64),.75!,.75!,0
  1118. 23274  SYMBOL(200,96),RIGHT$(GDYE$(TBS),64),.75!,.75!,0
  1119. 23290  RETURN
  1120. 23300 *AN03グラフ作成
  1121. 23305  SCALOV=0:SCALZR=0
  1122. 23310  XG=X0+((GDN-1) MOD (31*6))*XP
  1123. 23320  IF GDYY(GDN)>SCAL#(1) THEN SCALOV=1:GOTO 23326
  1124. 23322  IF GDYY(GDN)=0 THEN SCALZR=1
  1125. 23325  YG=Y0+INT((GDN-1)/(31*6))*YO+YP*(GDYY(GDN)/SCAL#(1))*10:GOTO 23330
  1126. 23326  YG=Y0+INT((GDN-1)/(31*6))*YO+YP*10 
  1127. 23330  IF GDN=1 OR GDN=31*6+1 THEN 23341
  1128. 23340  LINE(XGX+2,YGX)-(XGX+2,YG),PSET,4
  1129. 23341  IF SCALZR=1 THEN 23343
  1130. 23342  LINE(XG-1,YG-1)-(XG+1,YG+1),PSET,7,BF:GOTO 23345
  1131. 23343  LINE(XG-1,YG)-(XG+1,YG),PSET,7,BF:GOTO 23350
  1132. 23345  IF SCALOV=1 THEN LINE(XG+1,YG-2)-(XG-1,YG-1),PSET,2,B
  1133. 23350  XGX=XG:YGX=YG
  1134. 23360  RETURN
  1135. 23400 *AN03END
  1136. 23410  G=1:B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  1137. 23420  G=1:B=SWNO:BST(G,B)=0:GOSUB *BTN_ONOFF
  1138. 23430  SWNO=SWNOX
  1139. 23480 RETURN
  1140. 23490 '
  1141. 23500 *AN04:'//////////////////// [月間収支推移  ]
  1142. 23505  MCN=2:GOSUB *MCDSET:LINEC=5
  1143. 23510  X0=88:Y0=240:XP=20:YP=-12
  1144. 23520  LINE(X0,Y0)-(X0+XP*26,Y0),PSET,%LINEC
  1145. 23525  LINE(X0,Y0-YP*10)-(X0,Y0+YP*10),PSET,%LINEC
  1146. 23530  FOR II=1 TO 24
  1147. 23532    LINE(X0+XP*II,Y0-YP*10)-(X0+XP*II,Y0+YP*10),PSET,%LINEC,,&HCCCC
  1148. 23534  NEXT II
  1149. 23536  FOR II=-10 TO 10 STEP 1
  1150. 23538    LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,%LINEC,,&HAAAA
  1151. 23539    LINE(X0+XP*24.5!,Y0+YP*II)-(X0+XP*26,Y0+YP*II),PSET,%LINEC,,&HAAAA
  1152. 23540  NEXT II
  1153. 23550  SYMBOL(576,370),"TOTAL",.75!,.75!,7,,,&H01,1
  1154. 23560  SYMBOL(22,124),"ヒ",1,1,7,,,&H01
  1155. 23561  SYMBOL(24,150),"収",.75!,.75!,7,,,&H01
  1156. 23562  SYMBOL(24,170),"入",.75!,.75!,7,,,&H01
  1157. 23565  SYMBOL(24,300),"支",.75!,.75!,7,,,&H01
  1158. 23566  SYMBOL(24,320),"出",.75!,.75!,7,,,&H01
  1159. 23567  SYMBOL(22,346),"フ",1,1,7,,,&H01
  1160. 23600 '-------------------- データ読み込み
  1161. 23605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1162. 23610  SCN=3:GOSUB *グラフデータ初期化
  1163. 23620  IYM$=YRS$+MNS$:GDN=1
  1164. 23630  GOSUB *統計データ読みだし
  1165. 23632  GDYM$=YRM$+"."+MNM$
  1166. 23633  XS=X0+XP*(GDN-1)-16:YS=Y0-YP*10+((GDN-1) MOD 3)*12+10
  1167. 23635  SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
  1168. 23640  IF FIDX=0 THEN 23660
  1169. 23650    GDT#(1,GDN)=MX#(16)
  1170. 23651    GDT#(2,GDN)=MX#(17)
  1171. 23655    GDT#(3,GDN)=MX#(16)-MX#(17)
  1172. 23656    TGDT#=TGDT#+GDT#(3,GDN)
  1173. 23660  GOSUB *分析年月日更新
  1174. 23670  IF ANLCNT=0 THEN 23700
  1175. 23680  GDN=GDN+1:GOTO 23630
  1176. 23700 '-------------------- グラフ作成
  1177. 23710  GDMAX=GDN
  1178. 23720  GOSUB *スケール検出
  1179. 23725  GOSUB *スケール検出2
  1180. 23730  FOR II=-10 TO 10 STEP 2
  1181. 23732    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
  1182. 23735    SYMBOL(X0-46,Y0+YP*II-3),SCAL$(1),.6!,.6!,7
  1183. 23736  NEXT II
  1184. 23737  MESH1$=MESH$(10)
  1185. 23738  MESH2$=MESH$(14)
  1186. 23739  MESH3$=MESH$(15)
  1187. 23745  FOR GDN=1 TO GDMAX
  1188. 23750    YG1=Y0+(GDT#(1,GDN)/SMAXW#)*YP*10
  1189. 23751    YG2=Y0-(GDT#(2,GDN)/SMAXW#)*YP*10
  1190. 23752    YG3=Y0+(GDT#(3,GDN)/SMAXW#)*YP*10
  1191. 23755    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG1),PSET,0,BF,MESH1$
  1192. 23756    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG2),PSET,0,BF,MESH2$
  1193. 23758    LINE(X0+XP*GDN-XP,Y0)-(X0+XP*GDN  ,YG3),PSET,7,BF,MESH3$
  1194. 23760  NEXT GDN
  1195. 23770    YG=Y0+(TGDT#/SMAXW#)*YP*10
  1196. 23772    LINE(X0+XP*26-XP-6,Y0)-(X0+XP*26-4,YG),PSET,7,BF,MESH3$
  1197. 23800  LINE(430,76)-(620,92),PSET,7,BF
  1198. 23810  IF TGDT#>=0 THEN 23815
  1199. 23812  TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"-":GOTO 23820
  1200. 23815  TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"+"
  1201. 23820  SYMBOL(434,78),"収支合計: \"+TGDT$,.75!,.75!,0,,,&H01,1
  1202. 23970  GOSUB *画面フラッシュ
  1203. 23975  MCN=1:GOSUB *MCDSET
  1204. 23980  RETURN
  1205. 23990 '
  1206. 24000 *AN05:'//////////////////// [月間日累積推移]
  1207. 24005  MCN=2:GOSUB *MCDSET:LINEC=5
  1208. 24010  X0=88:Y0=392:XP=12:YP=-25
  1209. 24020  LINE(X0,Y0)-(X0+XP*32,Y0),PSET,%LINEC
  1210. 24022  LINE(X0,Y0)-(X0,Y0+YP*10),PSET,%LINEC
  1211. 24025  FOR II=1 TO 31:DYD=((SDAY+II-1) MOD 31):IF DYD=0 THEN DYD=31
  1212. 24028    IF DYD<>31 THEN 24031
  1213. 24030    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,%LINEC,,&HFFFF
  1214. 24031    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,%LINEC,,&HCCCC
  1215. 24032    IF (II MOD 5)<>0 AND II<>1 THEN 24034
  1216. 24033    SYMBOL(X0+XP*II-8,Y0+4),RIGHT$(STR$(100+DYD),2),.75!,.75!,6,,,&H01
  1217. 24034  NEXT II
  1218. 24035  FOR II=1 TO 10
  1219. 24036    LINE(X0,Y0+YP*II)-(X0+XP*32,Y0+YP*II),PSET,%LINEC,,&HAAAA
  1220. 24037  NEXT II
  1221. 24050  SYMBOL(464,395),"[日]",.75!,.75!,%6,,,&H01
  1222. 24060  SYMBOL(50,119),"[\]",.75!,.75!,%6,,,&H01
  1223. 24100 '-------------------- データ読み込み
  1224. 24105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1225. 24110  SCN=6:GOSUB *グラフデータ初期化
  1226. 24120  IYM$=YRS$+MNS$:GDN=1
  1227. 24125  GOSUB *ITM変換
  1228. 24130  GOSUB *HKISRC:GDY=0:'v1.4 
  1229. 24132  GOSUB *AN05年月表示
  1230. 24140  YRMX=YRM:MNMX=MNM:YRMX$=YRM$:MNMX$=MNM$
  1231. 24142  FOR RDY=SDAY TO 31:GDY=GDY+1
  1232. 24144    GOSUB *HKDGET:GDT#(GDN,GDY)=GDT#(GDN,GDY-1)+DYN#(GITM)
  1233. 24146  NEXT RDY
  1234. 24148  YR=YRM:MN=MNM:YDEF=0:MDEF=+1:DDEF=0:GOSUB *年月日変更
  1235. 24150  IYM$=YR$+MN$:GOSUB *HKISRC
  1236. 24152  IF FIDX=0 THEN 24162
  1237. 24154  IF SDAY=1 THEN 24162
  1238. 24156  FOR RDY=1 TO SDAY-1:GDY=GDY+1
  1239. 24158    GOSUB *HKDGET:GDT#(GDN,GDY)=GDT#(GDN,GDY-1)+DYN#(GITM)
  1240. 24160  NEXT RDY
  1241. 24162  YRM=YRMX:MNM=MNMX:YRM$=YRMX$:MNM$=MNMX$
  1242. 24170  GOSUB *分析年月日更新
  1243. 24175  IF ANLCNT=0 THEN 24200
  1244. 24180  GDN=GDN+1:GOTO 24130
  1245. 24200 '-------------------- グラフ作成
  1246. 24210  GDMAX=GDN
  1247. 24220  GOSUB *スケール検出
  1248. 24225  GOSUB *スケール検出2
  1249. 24230  FOR II=0 TO 10 
  1250. 24232    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
  1251. 24235    SYMBOL(X0-52,Y0+YP*II-3),SCAL$(1),.75!,.75!,7
  1252. 24236  NEXT II
  1253. 24240  FOR GDN=1 TO GDMAX
  1254. 24250    FOR GDY=1 TO 31
  1255. 24252      GOSUB *AN5GRP
  1256. 24270    NEXT GDY
  1257. 24280  NEXT GDN
  1258. 24285  GOSUB *画面フラッシュ
  1259. 24286  MCN=1:GOSUB *MCDSET
  1260. 24290  RETURN
  1261. 24295 '
  1262. 24350 *AN05年月表示
  1263. 24355  XS0=534:YS0=142:XSP=112:YSP=16
  1264. 24360  GDYM$=YRM$+"."+MNM$
  1265. 24365  XS=XS0:YS=YS0+(GDN-1)*YSP
  1266. 24370  SYMBOL(XS,YS),GDYM$,.75!,.75!,7,,,&H01,1
  1267. 24375  LINE(XS-30,YS+4)-(XS- 8,YS+4),PSET,GDN
  1268. 24376  LINE(XS-31,YS+3)-(XS-29,YS+5),PSET,GDN,BF
  1269. 24377  LINE(XS- 9,YS+3)-(XS- 7,YS+5),PSET,GDN,BF
  1270. 24380  RETURN
  1271. 24400 *AN5GRP
  1272. 24410  X=X0+XP*GDY:Y=Y0+(GDT#(GDN,GDY)/SMAXW#)*YP*10
  1273. 24420  IF GDY=1 THEN 24440
  1274. 24430  LINE(XM,YM)-(X,Y),PSET,GDN
  1275. 24440  LINE(X-1,Y-1)-(X+1,Y+1),PSET,GDN,BF
  1276. 24450  XM=X:YM=Y
  1277. 24460  RETURN
  1278. 24470 '
  1279. 24490 '
  1280. 24500 *AN06:'//////////////////// [項目別比率分析]
  1281. 24505  MCN=2:GOSUB *MCDSET:LINEC=5
  1282. 24510  X0=18:Y0=96:XP=90:YP=16
  1283. 24520  LOAD@ TIFDRV$+"\HK2AN06.TIF",(X0-4,Y0-4)
  1284. 24522  FOR II=1 TO 15:X=38
  1285. 24523    IF II<4 THEN Y=114+16*(II-1):GOTO 24526
  1286. 24524                 Y=114+16*II
  1287. 24526    SYMBOL(X,Y),CFI$(II),.75!,.75!,0,,,,2
  1288. 24528  NEXT II
  1289. 24570  GOSUB *AN06項目表示
  1290. 24600 '-------------------- データ読み込み
  1291. 24605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1292. 24610  SCN=1:GOSUB *グラフデータ初期化
  1293. 24620  IYM$=YRS$+MNS$
  1294. 24630  GOSUB *統計データ読みだし
  1295. 24632  GDYM$=YRM$+"."+MNM$
  1296. 24633  LINE(60*8,465)-(639,479),PSET,0,BF
  1297. 24635  SYMBOL(60*8,465),"Access File:"+GDYM$,.75!,.75!,4
  1298. 24640  IF FIDX=0 THEN 24660
  1299. 24650    FOR GDN=1 TO 18
  1300. 24651      GDT#(1,GDN)=GDT#(1,GDN)+MX#(GDN)
  1301. 24655    NEXT GDN
  1302. 24660  GOSUB *分析年月日更新
  1303. 24670  IF ANLCNT=0 THEN 24700
  1304. 24680  GOTO 24630
  1305. 24700 '-------------------- グラフ作成
  1306. 24710  XC0=465:YC0=297:RC=120:XG0=345:YG0=128:XGP=240:YGP=32
  1307. 24720  FOR GDN=1 TO 15
  1308. 24722    IF GDN>3 THEN TGDT#=GDT#(1,17) ELSE TGDT#=GDT#(1,16)
  1309. 24724    IF GDN>3 THEN YS=Y0+YP*(GDN+1) ELSE YS=Y0+YP*GDN
  1310. 24726    GDTC=0:GDAC=&H00:GDAP=1:GOSUB *AN06数値表示
  1311. 24728  NEXT GDN
  1312. 24730  TGDT#=GDT#(1,16):YS=Y0+YP*4:GDN=16 :GDAP=0
  1313. 24731  GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
  1314. 24732  TGDT#=GDT#(1,17):YS=Y0+YP*18:GDN=17
  1315. 24733  GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
  1316. 24734  TGDT#=GDT#(1,17):YS=Y0+YP*17:GDN=18
  1317. 24735  GDTC=6:GDAC=&H01:GOSUB *AN06数値表示
  1318. 24736  GDT#(1,19)=GDT#(1,16)-GDT#(1,17)
  1319. 24737  GDT1$="\"+RIGHT$(SPACE$(9)+STR$(GDT#(1,19)),9)
  1320. 24738  YS=Y0+YP*(19)
  1321. 24739  SYMBOL(X0+XP*1+8,YS+3),GDT1$,.75!,.75!,0,,,&H01
  1322. 24740  XM=XG0
  1323. 24741  LINE(XG0+6,YG0+6)-(XG0+XGP+6,YG0+YGP+6),PSET,0,BF:',MESH$(18)
  1324. 24742  LINE(XG0,YG0)-(XG0+XGP,YG0+YGP),PSET,7,B
  1325. 24743  FOR GDN=1 TO 3:IF GDT#(1,16)=0 THEN 24747
  1326. 24744    XG=XM+GDT#(1,GDN)/GDT#(1,16)*XGP
  1327. 24746    LINE(XM,YG0)-(XG,YG0+YGP),PSET,0,BF,MESH$(IMSH(GDN))
  1328. 24747    XM=XG
  1329. 24748  NEXT GDN
  1330. 24750  LINE(XG0,YG0-2)-(XG0+XGP,YG0-2),PSET,%LINEC
  1331. 24751  LINE(XG0,YG0-5)-(XG0,YG0-2),PSET,%LINEC
  1332. 24752  LINE(XG0+XGP*.5!,YG0-5)-(XG0+XGP*.5!,YG0-2),PSET,%LINEC
  1333. 24753  LINE(XG0+XGP,YG0-5)-(XG0+XGP,YG0-2),PSET,%LINEC
  1334. 24754  SCAL$="0"+SPACE$(19)+"50"+SPACE$(17)+"100 [%]"
  1335. 24755  SYMBOL(XG0-3,YG0-17),SCAL$,.75!,.75!,7
  1336. 24758  SYMBOL(436,YG0-33),"収入比率",.75!,.75!,7,,,&H01+&H02
  1337. 24760  RGM=.75!
  1338. 24761  CIRCLE(XC0+6,YC0+6),RC,0,,,,F,PSET:',MESH$(18)
  1339. 24762  CIRCLE(XC0,YC0),RC,7
  1340. 24763  FOR GDN=4 TO 15
  1341. 24764    IF GDT#(1,GDN)=0 OR GDT#(1,17)=0 THEN 24769
  1342. 24765    GDTX=GDT#(1,GDN)/GDT#(1,17):RGX=RGM+GDTX
  1343. 24766    IF RGX>=1 THEN RGX=RGX-1
  1344. 24768    CIRCLE(XC0,YC0),RC,0,,RGM,RGX,F,PSET,MESH$(IMSH(GDN))
  1345. 24769    RGM=RGX
  1346. 24770    IF GDTX<.05! THEN 24800
  1347. 24771    X1=XC0+RC*1.2!*SIN(2*PI*(RGM-(GDTX/2)+.25!))-36/2
  1348. 24772    Y1=YC0-RC*1.2!*COS(2*PI*(RGM-(GDTX/2)+.25!))-8
  1349. 24773    X2=XC0+RC*.8!*SIN(2*PI*(RGM-(GDTX/2)+.25!))
  1350. 24774    Y2=YC0-RC*.8!*COS(2*PI*(RGM-(GDTX/2)+.25!))
  1351. 24783    SYMBOL(X1,Y1),CFI$(GDN),.75!,.75!,7,,,&H01+&H10
  1352. 24784    LINE(X1,Y1+12)-(X2,Y2),XOR,7
  1353. 24800  NEXT GDN
  1354. 24810  CIRCLE(XC0,YC0),40,0,,,,F,PSET,7
  1355. 24820  SYMBOL(436,289),"支出比率",.75!,.75!,0,,,&H01+&H02
  1356. 24830  GOSUB *画面フラッシュ
  1357. 24835  MCN=1:GOSUB *MCDSET
  1358. 24840  RETURN
  1359. 24845 '
  1360. 24850 *AN06項目表示
  1361. 24852  DATA 1,5,7,2,1,7,6,3,4,5,8,9,10,11,12
  1362. 24855  RESTORE 24852
  1363. 24860  FOR II=1 TO 15:READ IMSH(II)
  1364. 24880  NEXT II
  1365. 24890  RETURN
  1366. 24900 *AN06数値表示
  1367. 24902  GDT1$="\ "+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  1368. 24903  IF TGDT#=0 THEN GDT2$="計算不能":GOTO 24916
  1369. 24904  TGDP#=GDT#(1,GDN)/TGDT#
  1370. 24906  GOSUB *小数点表示変換
  1371. 24916  SYMBOL(X0+XP*1+8,YS+3),GDT1$,.75!,.75!,GDTC,,,GDAC,GDAP
  1372. 24918  SYMBOL(X0+XP*2+10,YS+3),GDT2$,.75!,.75!,GDTC,,,GDAC,GDAP
  1373. 24920  RETURN
  1374. 24990 '
  1375. 25000 *AN07:'//////////////////// [エンゲル係数推移 ]
  1376. 25005  MCN=2:GOSUB *MCDSET:LINEC=5
  1377. 25010  X0=18:Y0=96:XP=72:YP=16
  1378. 25020  LINE(X0-4,Y0-4)-(X0+XP*6+4,Y0+YP*20+4),PSET,7,BF
  1379. 25022  LINE(X0,Y0)-(X0+XP*6,Y0+YP*20),PSET,0,B
  1380. 25023  LINE(X0-1,Y0-1)-(X0+XP*6+1,Y0+YP*20+1),PSET,0,B
  1381. 25030  FOR II=1 TO 19:LINE(X0,Y0+YP*II)-(X0+XP*6,Y0+YP*II),PSET,0:NEXT II
  1382. 25031  PAINT (X0+1,Y0+1),%8,0
  1383. 25032  PAINT (X0+1,Y0+YP*19+1),%7,0
  1384. 25040  FOR II=1 TO 5:LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*20),PSET,0:NEXT II
  1385. 25043  DATA "  年.月","支出計[A]","基支出[B]","食  費[C]"," B/A"," C/A"
  1386. 25044  RESTORE 25043:FOR II=0 TO 5 :READ ITM$
  1387. 25045    SYMBOL(X0+XP*II+4,Y0+2),ITM$,.75!,.75!,7,,,&H01,1
  1388. 25046  NEXT II
  1389. 25047  SYMBOL(36,402),"合 計",.75!,.75!,0,,,&H01,1
  1390. 25048  LINE(X0+XP*5-24,Y0)-(X0+XP*5,Y0+YP),PSET,0,BF,MESH$(9)
  1391. 25049  LINE(X0+XP*6-24,Y0)-(X0+XP*6,Y0+YP),PSET,0,BF,MESH$(14)
  1392. 25050  XG0=462:YG0=112:XGP=16:YGP=16
  1393. 25052  LINE(XG0,YG0)-(XG0+XGP*10,YG0),PSET,%LINEC
  1394. 25053  LINE(XG0,YG0)-(XG0,YG0+YGP*19+4),PSET,%LINEC
  1395. 25054  LINE(XG0,YG0+YGP*18)-(XG0+XGP*10,YG0+YGP*19+4),PSET,%LINEC,BF
  1396. 25060  FOR II=1 TO 10
  1397. 25061  LINE(XG0+XGP*II,YG0)-(XG0+XGP*II,YG0+YGP*19+4),PSET,%LINEC,,&HAAAA
  1398. 25062  NEXT II
  1399. 25063  FOR II=1 TO 19
  1400. 25064  LINE(XG0,YG0+YGP*II)-(XG0+XGP*10,YG0+YGP*II),PSET,%LINEC,,&HCCCC
  1401. 25065  NEXT II
  1402. 25066  SYMBOL(460,100),"0            50          100",.75!,.75!,%6
  1403. 25100 '-------------------- データ読み込み
  1404. 25105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1405. 25110  SCN=3:GOSUB *グラフデータ初期化
  1406. 25115  FOR II=1 TO 3:TGDT#(II)=0:NEXT II
  1407. 25120  IYM$=YRS$+MNS$:GDN=1
  1408. 25130  GOSUB *統計データ読みだし
  1409. 25132  GDYM$=YRM$+"."+MNM$
  1410. 25133  XS=X0+4:YS=Y0+YP*GDN+2
  1411. 25135  SYMBOL(XS,YS),GDYM$,.75!,.75!,0,,,&H01,1
  1412. 25140  IF FIDX=0 THEN 25160
  1413. 25150    GDT#(1,GDN)=MX#(17):GDT#(1,19)=GDT#(1,19)+MX#(17):'92.10.11
  1414. 25151    GDT#(2,GDN)=MX#(18):GDT#(2,19)=GDT#(2,19)+MX#(18)
  1415. 25155    GDT#(3,GDN)=MX#(4) :GDT#(3,19)=GDT#(3,19)+MX#(4)
  1416. 25160  GOSUB *分析年月日更新
  1417. 25170  IF ANLCNT=0 THEN 25200
  1418. 25180  GDN=GDN+1:GOTO 25130
  1419. 25200 '-------------------- グラフ作成
  1420. 25210  GDMAX=GDN
  1421. 25220  FOR GDN=1 TO GDMAX
  1422. 25230    GOSUB *AN07グラフ作成
  1423. 25240  NEXT GDN
  1424. 25250  GDN=19:GOSUB *AN07グラフ作成
  1425. 25260  GOSUB *画面フラッシュ
  1426. 25265  MCN=1:GOSUB *MCDSET
  1427. 25270  RETURN
  1428. 25280 '
  1429. 25300 *AN07グラフ作成
  1430. 25312  GDT$(1)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  1431. 25314  GDT$(2)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(2,GDN)),8)
  1432. 25316  GDT$(3)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(3,GDN)),8)
  1433. 25320  IF GDT#(1,GDN)=0 THEN GDT$(4)="計算不能":GOTO 25326
  1434. 25322  TGDP#=GDT#(2,GDN)/GDT#(1,GDN):X1OV=0
  1435. 25323  IF TGDP#<=1 THEN X1=XG0+TGDP#*XGP*10 ELSE X1=XG0+XGP*10:X1OV=1
  1436. 25324  GOSUB *小数点表示変換:GDT$(4)=GDT2$
  1437. 25326  IF GDT#(1,GDN)=0 THEN GDT$(5)="計算不能":GOTO 25340
  1438. 25328  TGDP#=GDT#(3,GDN)/GDT#(1,GDN):X2OV=0
  1439. 25329  IF TGDP#<=1 THEN X2=XG0+TGDP#*XGP*10 ELSE X2=XG0+XGP*10:X2OV=1
  1440. 25330  GOSUB *小数点表示変換:GDT$(5)=GDT2$
  1441. 25340  FOR II=1 TO 5
  1442. 25342    SYMBOL(X0+XP*II+4,Y0+YP*GDN+2),GDT$(II),.75!,.75!,0
  1443. 25344  NEXT II
  1444. 25345  IF GDT$(4)="計算不能" THEN 25360
  1445. 25350  Y=YG0+YGP*(GDN-1)
  1446. 25352  LINE(XG0,Y+2)-(X1,Y+10),PSET,0,BF,MESH$(9)
  1447. 25353  IF X1OV=1 THEN LINE(X1,Y+2)-(X1-1,Y+10),PSET,2,BF
  1448. 25354  LINE(XG0,Y+6)-(X2,Y+14),PSET,0,BF,MESH$(14)
  1449. 25355  IF X2OV=1 THEN LINE(X2,Y+6)-(X2-1,Y+14),PSET,2,BF
  1450. 25360  RETURN
  1451. 25370 '
  1452. 25490 '
  1453. 25500 '*AN08:'//////////////////// [年別動向比較  ]
  1454. 25990 '
  1455. 26000 *AN08:'//////////////////// [月間レポート印刷 ]
  1456. 26005  MCN=2:GOSUB *MCDSET
  1457. 26010  GDY=0:PCMAX=31+4+14
  1458. 26100 '-------------------- データ読み込み
  1459. 26105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1460. 26120  IYM$=YRS$+MNS$:CR$=CHR$(&H0D,&H0A):FF$=CHR$(&H0C)
  1461. 26125  SCN=2:GOSUB *グラフデータ初期化
  1462. 26130  GOSUB *HKISRC
  1463. 26132  GDYM$=YRM$+"."+MNM$
  1464. 26133  PCMES$="月間レポート印刷 "+YRM$+"年"+MNM$+"月"
  1465. 26134  PCCD=1:GOSUB *PROCD:'処理状況表示"
  1466. 26135  PR1$="月間家計簿リスト 《"+YRM$+"年"+MNM$+"月》"
  1467. 26136  PR2$="家計簿System HK v1.4 "+DATE$+" "+TIME$
  1468. 26142  GOSUB *LAJ2:LPRINT PR1$+SPACE$(6)+PR2$+CR$
  1469. 26148 '
  1470. 26150  PR$="【出来事】"
  1471. 26152  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1472. 26155  YRMX=YRM:MNMX=MNM:YRMX$=YRM$:MNMX$=MNM$
  1473. 26160  FOR RDY=SDAY TO 31:GDY=GDY+1
  1474. 26161    PCINT=1:PCCUR=GDY:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1475. 26162    GOSUB *AN08DEV
  1476. 26164  NEXT RDY
  1477. 26165  YR=YRM:MN=MNM:DY=RDY:GOSUB *週検索
  1478. 26166  IF SDAY=1 THEN 26180                    :'
  1479. 26168  YR=YRM:MN=MNM:YDEF=0:MDEF=+1:DDEF=0:GOSUB *年月日変更
  1480. 26170  IYM$=YR$+MN$:GOSUB *HKISRC
  1481. 26172  IF FIDX=0 THEN 26180
  1482. 26173  FOR RDY=1 TO SDAY-1:GDY=GDY+1
  1483. 26174    PCINT=1:PCCUR=GDY:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1484. 26176    GOSUB *AN08DEV
  1485. 26178  NEXT RDY
  1486. 26180  YRM=YRMX:MNM=MNMX:YRM$=YRMX$:MNM$=MNMX$
  1487. 26198 '
  1488. 26210  PR$="【収 入】"
  1489. 26212  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1490. 26220  GOSUB *統計データ読みだし
  1491. 26230  PR$= " 項目    合計金額   1日平均   最高額   比  率    日数"
  1492. 26231  PRX$=" 項目    合計金額   1日平均   最高額   比  率    日数"
  1493. 26234  GOSUB *LAJ2:LPRINT PR$
  1494. 26240  FOR GDN=1 TO 3
  1495. 26241    PCINT=1:PCCUR=31+GDN:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1496. 26242    GOSUB *AN08項目印刷
  1497. 26244  NEXT GDN:LPRINT
  1498. 26246  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(16)),8)
  1499. 26248  PR2#=INT(MX#(16)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1500. 26250  PR$="合 計"+"  "+PR1$+"  "+PR2$
  1501. 26252    PCINT=1:PCCUR=31+4:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1502. 26254  GOSUB *LAJ2:LPRINT PR$
  1503. 26258 '
  1504. 26260  LPRINT
  1505. 26270  PR$="【支 出】"
  1506. 26272  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1507. 26280  PR$= " 項目    合計金額   1日平均   最高額   比  率    日数"
  1508. 26281  PRX$=" 項目    合計金額   1日平均   最高額   比  率    日数"
  1509. 26284  GOSUB *LAJ2:LPRINT PR$
  1510. 26290  FOR GDN=4 TO 15
  1511. 26291    PCINT=1:PCCUR=31+1+GDN:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1512. 26292    GOSUB *AN08項目印刷
  1513. 26294  NEXT GDN:LPRINT
  1514. 26300  GDN=18:ITEMX$=ITEM$(18+1):ITEM$(18+1)="基支出"
  1515. 26302  GOSUB *AN08項目印刷
  1516. 26304  ITEM$(18+1)=ITEMX$
  1517. 26310  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(17)),8)
  1518. 26312  PR2#=INT(MX#(17)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1519. 26314  PR$="合 計"+"  "+PR1$+"  "+PR2$
  1520. 26316  GOSUB *LAJ2:LPRINT PR$
  1521. 26318  PCINT=1:PCCUR=PCMAX:PCCD=3:GOSUB *PROCD:'処理状況表示"
  1522. 26319              LPRINT FF$
  1523. 26320 '
  1524. 26340  PCCD=2:GOSUB *PROCD:'処理状況表示"
  1525. 26350  GOSUB *画面フラッシュ
  1526. 26355  MCN=1:GOSUB *MCDSET
  1527. 26360  RETURN
  1528. 26380 '
  1529. 26400 *AN08分析
  1530. 26410  FOR GDN=1 TO 18
  1531. 26412    IF DYN#(GDN)<>0 THEN GDT#(2,GDN)=GDT#(2,GDN)+1
  1532. 26414    IF DYN#(GDN)>GDT#(1,GDN) THEN GDT#(1,GDN)=DYN#(GDN)
  1533. 26416  NEXT GDN
  1534. 26420  RETURN
  1535. 26425 '
  1536. 26430 *AN08項目印刷
  1537. 26432  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(GDN)),8)
  1538. 26434  PR2#=INT(MX#(GDN)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1539. 26436  PR3$=RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  1540. 26438  TGDP#=MX#(GDN)/MX#(16):GOSUB *小数点表示変換:PR4$=GDT2$
  1541. 26440  PR5$=RIGHT$(STR$(GDT#(2,GDN)),2)
  1542. 26442  PR$=ITEM$(GDN+1)+"  "+PR1$+"  "+PR2$+"  "+PR3$+"  "+PR4$+"    "+PR5$
  1543. 26444  COLOR 0:PRINT SPACE$(4)+PR$
  1544. 26446  GOSUB *LAJ2:LPRINT PR$
  1545. 26448  RETURN
  1546. 26449 '
  1547. 26450 *AN08DEV
  1548. 26452    TCALF=0:GOSUB *HKDGET:GOSUB *AN08分析
  1549. 26454    YR=YRM:MN=MNM:DY=RDY:GOSUB *週検索
  1550. 26456    IF RDY>MNDN THEN PRINT:LPRINT:GOTO 26462
  1551. 26458    PR$=RIGHT$(STR$(100+RDY),2)+"("+WKM$+") "+LEFT$(DEV$,64)
  1552. 26460    PRINT SPACE$(4)+PR$:GOSUB *LAJ:LPRINT PR$
  1553. 26462    RETURN
  1554. 26464 '
  1555. 26490 '
  1556. 26500 *AN09:'//////////////////// [総計演算処理  ]
  1557. 26505  GOSUB *分析結果画面消去
  1558. 26520  GOSUB *HKIOPN:CLOSE :TTLCF=0
  1559. 26530  RI=1 :GOSUB *HKIGET:SX$(1)=YRM$:SX$(2)=MNM$
  1560. 26540  RI=IR:GOSUB *HKIGET:SX$(3)=YRM$:SX$(4)=MNM$
  1561. 26550  GOSUB *分析条件表示
  1562. 26555  MESN=23:GOSUB *MESDSP
  1563. 26560  CMES$="統計データオールクリア実行":GOSUB *確認2
  1564. 26565  ON CAUNO GOTO 26570,26580
  1565. 26570  TTLCF=1
  1566. 26580  MESN=20:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1567. 26590  MCN=2:GOSUB *MCDSET
  1568. 26595  PCCD=1:PCMES$="統計演算処理実行中"  :GOSUB *PROCD:'処理状況表示
  1569. 26600  FOR LOOP=1 TO IR
  1570. 26610    RI=LOOP:GOSUB *HKIGET
  1571. 26620    PCINT=1:PCMAX=IR:PCCUR=LOOP:PCCD=3:GOSUB *PROCD:'処理状況表示
  1572. 26640    IF TTLCF=1 THEN 26670
  1573. 26650    IF RIGHT$(IMAK$,1)<>" " THEN 26720
  1574. 26670    GOSUB *HKTCAL
  1575. 26672    RMN=MNM:SDAYC=1:GOSUB *HKTPUT
  1576. 26675    GOSUB *HKTCALB
  1577. 26680    RMN=MNM:SDAYC=0:GOSUB *HKTPUT
  1578. 26685    MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
  1579. 26720  NEXT LOOP
  1580. 26725  PCCD=2:GOSUB *PROCD:'処理状況表示
  1581. 26730 ' GOSUB *分析結果画面消去
  1582. 26740  MCN=1:GOSUB *MCDSET
  1583. 26750  RETURN
  1584. 26990 '
  1585. 27000 *AN10:'//////////////////// [
  1586. 27500 *AN11:'//////////////////// [
  1587. 28000 *AN12:'//////////////////// [
  1588. 28500 *AN13:'//////////////////// [
  1589. 29000 *AN14:'//////////////////// [
  1590. 29500 *AN15:'//////////////////// [
  1591. 29990 '
  1592. 30000 *分析条件合理性判定
  1593. 30020  YRS$=RIGHT$(STR$(10000+YRS),4)
  1594. 30030  MNS$=RIGHT$(STR$(100+MNS),2):IYM$=YRS$+MNS$:GOSUB *HKISRC
  1595. 30040    IF FIDX=0 THEN  MESN=15:GOSUB *VALERR :GOTO 30160:'NG
  1596. 30050  IF SMOPT(SMODE,2)=0             THEN 30110:'?
  1597. 30060  YRE$=RIGHT$(STR$(10000+YRE),4)
  1598. 30070  MNE$=RIGHT$(STR$(100+MNE),2):IYM$=YRE$+MNE$:GOSUB *HKISRC
  1599. 30080    IF FIDX=0 THEN  MESN=16:GOSUB *VALERR :GOTO 30160:'NG
  1600. 30090    IF (YRS*12+MNS)<=(YRE*12+MNE) THEN 30102:'?
  1601. 30100                    MESN=7 :GOSUB *VALERR :GOTO 30160:'NG
  1602. 30102    IF (YRE*12+MNE)-(YRS*12+MNS)<=SMOPT(SMODE,2)-1 THEN 30110:'?
  1603. 30103    ASMES$="★★分析期間範囲:"+STR$(SMOPT(SMODE,2))+"か月以内"
  1604. 30104                    MESN=8 :GOSUB *VALERR:GOTO 30160:'NG 
  1605. 30110  IF SMOPT(SMODE,3)=0             THEN 30150:'OK
  1606. 30120    IF SITM=1 THEN  MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1607. 30121    IF SITM=20 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1608. 30125    IF SITM=0 THEN  MESN=11:GOSUB *VALERR :GOTO 30160:'NG
  1609. 30130    IF SMOPT(SMODE,3)=1           THEN 30150:'OK
  1610. 30140    IF SITM>16 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1611. 30150  ANLCDF=1:RETURN:'Good  !!
  1612. 30160  ANLCDF=0:RETURN:'No Good!
  1613. 30170  *VALERR
  1614. 30175   GOSUB *MESDSP:IF ASMES$="" THEN MESN=25:GOSUB *SNDMSG:GOTO 30185
  1615. 30176   CMES$=ASMES$:GOSUB *確認2
  1616. 30185   MESN=3:GOSUB *MESDSP:ASMES$=""
  1617. 30190   RETURN
  1618. 30195 '
  1619. 30200 *スケール検出
  1620. 30210  FOR II=1 TO SCN:SMAX#(II)=0:NEXT II
  1621. 30220  FOR II=1 TO SCN:FOR JJ=1 TO 31
  1622. 30230    IF ABS(GDT#(II,JJ))>SMAX#(II) THEN SMAX#(II)=ABS(GDT#(II,JJ))
  1623. 30240  NEXT JJ:NEXT II
  1624. 30250  DATA     1000,    1500,    2000,    2500,    5000,    7500
  1625. 30260  DATA    10000,   15000,   20000,   25000,   50000,   75000
  1626. 30270  DATA   100000,  150000,  200000,  250000,  500000,  750000
  1627. 30280  DATA  1000000, 1500000, 2000000, 2500000, 5000000, 7500000
  1628. 30290  DATA 10000000,15000000,20000000,25000000,50000000,75000000
  1629. 30300  FOR II=1 TO SCN
  1630. 30305    RESTORE 30250
  1631. 30310    FOR JJ=1 TO 30:READ SCAL#(II)
  1632. 30320      IF SCAL#(II)>SMAX#(II) THEN JJ=31:GOTO 30330
  1633. 30330  NEXT JJ:NEXT II
  1634. 30340  RETURN
  1635. 30395 '
  1636. 30400 *グラフデータ初期化
  1637. 30410  FOR II=1 TO SCN:FOR JJ=0 TO 31
  1638. 30420    GDT#(II,JJ)=0
  1639. 30430  NEXT JJ:NEXT II:TGDT#=0
  1640. 30440  RETURN
  1641. 30450 *ITM変換
  1642. 30460  GITM=SITM-1
  1643. 30470  IF SITM=19 THEN GITM=17
  1644. 30480  IF SITM=18 THEN GITM=18
  1645. 30490  RETURN
  1646. 30495 '
  1647. 30500 *統計データ読みだし
  1648. 30510  GOSUB *HKISRC
  1649. 30520  IF FIDX=0 THEN 30580
  1650. 30530  IF RIGHT$(IMAK$,1)<>" " THEN 30570
  1651. 30540  GOSUB *HKTCAL
  1652. 30545  RMN=MNM:SDAYC=1:GOSUB *HKTPUT
  1653. 30550  GOSUB *HKTCALB
  1654. 30555  RMN=MNM:SDAYC=0:GOSUB *HKTPUT
  1655. 30560  MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
  1656. 30570  RMN=MNM:GOSUB *HKTGET
  1657. 30580  RETURN
  1658. 30590 '
  1659. 30600 *スケール検出2
  1660. 30610  SMAXW#=0
  1661. 30620  FOR II=1 TO SCN
  1662. 30630    IF SCAL#(II)<SMAXW# THEN 30650
  1663. 30640    SMAXN=II:SMAXW#=SCAL#(II)
  1664. 30650  NEXT II
  1665. 30660  RETURN
  1666. 30670 '
  1667. 30700 *シート選択判定
  1668. 30710 ' X0=52:Y0=262:XP=3:YP=-10:YO=128
  1669. 30720  IF X_M<X0-1 OR X_M>X0+XP*31*6-1 THEN 30770
  1670. 30730  IF Y_M<Y0+YP*10 OR Y_M>Y0+YO    THEN 30770
  1671. 30735  IF Y_M>Y0 AND Y_M<Y0+YO+YP*10   THEN 30770
  1672. 30740  IF Y_M>Y0 THEN YOFF=1 ELSE YOFF=0
  1673. 30750  TBS=INT((X_M-(X0-1))/XP)+1+YOFF*31*6
  1674. 30760  PLAY "O6L16EC":RETURN
  1675. 30770  TBS=0:MCN=3:GOSUB *MCDSET:PLAY "O7L16CE"
  1676. 30775  WAIT SWAIT/2:MCN=1:GOSUB *MCDSET:RETURN
  1677. 30780 '
  1678. 30800 *画面フラッシュ
  1679. 30810  RETURN:'FOR II=1 TO 5
  1680. 30820    PALETTE 13,[255,160,200]
  1681. 30825  '  PALETTE  8,[160,240,250]
  1682. 30830    FOR JJ=1 TO 500:NEXT JJ
  1683. 30840    PALETTE 13,[160,160,200]
  1684. 30845  '  PALETTE  8,[ 64, 64, 64]
  1685. 30850    FOR JJ=1 TO 300:NEXT JJ
  1686. 30860  NEXT II
  1687. 30870  RETURN
  1688. 30880 '
  1689. 30900 *小数点表示変換
  1690. 30910  GDT21=INT(TGDP#*100)
  1691. 30920  GDT22$=RIGHT$(STR$(INT(10000+(TGDP#*100-GDT21)*1000)),3)
  1692. 30930  GDT21$=STR$(GDT21)+"."
  1693. 30940  GDT2$=RIGHT$(SPACE$(5)+GDT21$+GDT22$+" %",9)
  1694. 30950  RETURN
  1695. 30960 '
  1696. 31000 *LAJ  :'////////// 漢字文字ピッチ縮小
  1697. 31005  ON PRTCD+1 GOTO 31010,31015
  1698. 31010  LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H22,&H76);:RETURN
  1699. 31015  LPRINT SPACE$(5);                               :RETURN
  1700. 31040 *LAJ2 :'////////// 漢字文字ピッチ縮小2
  1701. 31045  ON PRTCD+1 GOTO 31050,31055
  1702. 31050  LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H23,&H72);:RETURN
  1703. 31055  LPRINT SPACE$(5);                               :RETURN
  1704. 31070 '
  1705. 31100 *SDAY表示
  1706. 31105  RETURN'
  1707. 31110  PUT@A(520,56)-(537,73),SDD#
  1708. 31120  DEF FONT "システム   12ドット"
  1709. 31130  SYMBOL(522,60),SDAY$,.75!,.75!,4
  1710. 31140  DEF FONT "システム   16ドット"
  1711. 31150  RETURN
  1712. 31160 '
  1713. 31200 '
  1714. 31210 *ABOUT表示
  1715. 31220  X1A=146:Y1A=150:XPA=326:YPA=100
  1716. 31230  MOUSE 1,,,0
  1717. 31240  GET@A(X1A,Y1A)-(X1A+XPA,Y1A+YPA),ABOUTD#
  1718. 31250  LOAD@ TIFDRV$+"\hk2logo.tif",(X1A,Y1A)
  1719. 31260  MOUSE 1,,,1
  1720. 31270  CMES$=ABOUT$:GOSUB *確認2
  1721. 31280  PUT@A(X1A,Y1A)-(X1A+XPA,Y1A+YPA),ABOUTD#
  1722. 31290  RETURN
  1723. 31300 '
  1724. 32000 *確認2
  1725. 32010  GX=G:G=4:SWNOY=SWNO:MOUSE 1,,,0
  1726. 32020  GET@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),CAUT#
  1727. 32030  LOAD@ TIFDRV$+"\CAUTION2.TIF",(W_X1(G),W_Y1(G))
  1728. 32040  PLAY "o6l4ce":MOUSE 1,,,1
  1729. 32050  FOR II=1 TO 4
  1730. 32060    SYMBOL(W_X1(G)+102,W_Y1(G)+9),CMES$,.75!,.75!,6
  1731. 32070    WAIT SWAIT\10+1
  1732. 32080    LINE(W_X1(G)+102,W_Y1(G)+9)-(W_X1(G)+102+6*39,W_Y1(G)+9+12),PSET,%9,BF
  1733. 32090    WAIT SWAIT\10+1
  1734. 32100  NEXT II
  1735. 32110  SYMBOL(W_X1(G)+102,W_Y1(G)+9),CMES$,.75!,.75!,7
  1736. 32120  MESN=19:GOSUB *SNDMSG:'28chr
  1737. 32130  GOSUB *MCSELECT'ボタン選択
  1738. 32140  IF SWNO<0 THEN SWNO=2
  1739. 32150  IF SWNO=3 THEN 32130
  1740. 32160  IF SWNO=0 THEN 32130
  1741. 32170  B=SWNO:BST(G,B)=1:GOSUB *BTN_ONOFF
  1742. 32180  WAIT SWAIT\5+1
  1743. 32190  PUT@A(W_X1(G),W_Y1(G))-(W_X2(G),W_Y2(G)),CAUT#
  1744. 32200  CAUNO=SWNO:SWNO=SWNOY:G=GX
  1745. 32210  RETURN
  1746. 32220 '
  1747. 32300 *PROCD:'処理状況表示
  1748. 32310  ON PCCD GOTO *PC01,*PC02,*PC03
  1749. 32320 *PC01
  1750. 32330  GET@A(150,200)-(483,256),MD_SB#
  1751. 32340  MOUSE 1,,,0:LOAD@ TIFDRV$+"\HK2PROC.TIF",(150,200):MOUSE 1,,,1
  1752. 32345  SYMBOL(226,204),PCMES$,.75!,.75!,0
  1753. 32350  RETURN
  1754. 32360 *PC02
  1755. 32370  PUT@A(150,200)-(483,256),MD_SB#
  1756. 32380  RETURN
  1757. 32400 *PC03:' pcmax,pccur,pcint
  1758. 32410  XP0=157:YP0=240:XPM=477:YPM=250
  1759. 32420  IF (PCCUR MOD PCINT)<>0 THEN RETURN
  1760. 32430  XP=XP0+INT((XPM-XP0)*(PCCUR/PCMAX))
  1761. 32440  LINE(XP0,YP0)-(XP,YPM),PSET,1,BF
  1762. 32450  RETURN
  1763. 32460 '
  1764. 34000 *メッシュデータ定義
  1765. 34005 '//////// [1]青
  1766. 34010  MESH$(1)=CHR$(&H99,&H99,&H99,&H99)
  1767. 34015 '//////// [2]赤
  1768. 34020  MESH$(2)=CHR$(&HAA,&HAA,&HAA,&HAA)
  1769. 34025 '//////// [3]ピンク
  1770. 34030  MESH$(3)=CHR$(&HBB,&HBB,&HBB,&HBB)
  1771. 34035 '//////// [4]緑
  1772. 34040  MESH$(4)=CHR$(&HCC,&HCC,&HCC,&HCC)
  1773. 34045 '//////// [5]青グレー
  1774. 34050  MESH$(5)=CHR$(&HDD,&HDD,&HDD,&HDD)
  1775. 34055 '//////// [6]黄色
  1776. 34060  MESH$(6)=CHR$(&HEE,&HEE,&HEE,&HEE)
  1777. 34065 '//////// [7]うす青
  1778. 34070  MESH$(7)=CHR$(&H9F,&H9F,&H9F,&H9F,&HF9,&HF9,&HF9,&HF9)
  1779. 34075 '//////// [8]うす赤
  1780. 34080  MESH$(8)=CHR$(&HAF,&HAF,&HAF,&HAF,&HFA,&HFA,&HFA,&HFA)
  1781. 34085 '//////// [9]うすピンク
  1782. 34090  MESH$(9)=CHR$(&HBF,&HBF,&HBF,&HBF,&HFB,&HFB,&HFB,&HFB)
  1783. 34095 '//////// [10]うす緑
  1784. 34100  MESH$(10)=CHR$(&HCF,&HCF,&HCF,&HCF,&HFC,&HFC,&HFC,&HFC)
  1785. 34105 '//////// [11]うす青グレー
  1786. 34110  MESH$(11)=CHR$(&HDF,&HDF,&HDF,&HDF,&HFD,&HFD,&HFD,&HFD)
  1787. 34115 '//////// [12]うす黄色
  1788. 34120  MESH$(12)=CHR$(&HEF,&HEF,&HEF,&HEF,&HFE,&HFE,&HFE,&HFE)
  1789. 34125 '//////// [13]オレンジ
  1790. 34130  MESH$(13)=CHR$(&HAE,&HAE,&HAE,&HAE,&HEA,&HEA,&HEA,&HEA)
  1791. 34135 '//////// [14]赤紫
  1792. 34140  MESH$(14)=CHR$(&HAB,&HAB,&HAB,&HAB,&HBA,&HBA,&HBA,&HBA)
  1793. 34145 '//////// [15]しろ斜線青
  1794. 34150  MESH$(15)=CHR$(&HF9,&H99,&HF9,&H99,&H99,&H9F,&H99,&H9F,&H99,&HF9,&H99,&HF9,&H9F,&H99,&H9F,&H99)
  1795. 34155 '//////// [16]しろグレー
  1796. 34160  MESH$(16)=CHR$(&H77,&H77,&H77,&H77)
  1797. 34165 '//////// [17]明るいしろグレー
  1798. 34170  MESH$(17)=CHR$(&H7F,&H7F,&H7F,&H7F,&HF7,&HF7,&HF7,&HF7)
  1799. 34175 '//////// [18]暗いしろグレー
  1800. 34180  MESH$(18)=CHR$(&H70,&H70,&H70,&H70,&H07,&H07,&H07,&H07)
  1801. 34185  RETURN
  1802. 34190 '
  1803. 34195 '
  1804. 34200 *分析モード読み取り
  1805. 34205  RESTORE *分析モード項目:READ MODEN
  1806. 34210  FOR SMODE=1 TO MODEN
  1807. 34215    READ SMODE$(SMODE)
  1808. 34220    FOR II=1 TO 3:READ SMOPT(SMODE,II):NEXT II
  1809. 34225  NEXT SMODE
  1810. 34230  SMODE=1
  1811. 34235  RESTORE *項目データ
  1812. 34240  FOR II=1 TO 20
  1813. 34245    READ ITEM$(II),ITEMC(II)
  1814. 34250    IF II>1 AND II<17 THEN ITEM$(II)=CFI$(II-1)
  1815. 34255  NEXT II
  1816. 34260  RETURN
  1817. 34265 '
  1818. 34470 *数字漢字変換
  1819. 34475  NBK$=""
  1820. 34480  FOR INBK=1 TO NBN
  1821. 34485    NBAX$=MID$(NBA$,INBK,1)
  1822. 34490    IF NBAX$=" " THEN NBK$=NBK$+" ":GOTO 34500
  1823. 34495    NBK$=NBK$+KNJ$(&H2330+VAL(NBAX$))
  1824. 34500  NEXT INBK
  1825. 34505  RETURN
  1826. 34510 '
  1827. 34515 '
  1828. 34520 '
  1829. 34525 *FADEOUT:CLS 1:CONSOLE 0,24,0
  1830. 34530  FOR II=0 TO 15
  1831. 34535    PALETTE II,[16*II,16*II,16*II]
  1832. 34540  NEXT II
  1833. 34545  FOR II=0 TO 255 STEP 5
  1834. 34550    FOR JJ=0 TO 15:KK=16*JJ+II*(255-16*JJ)/255
  1835. 34555      PALETTE JJ,[KK,KK,KK]
  1836. 34560    NEXT JJ
  1837. 34565  NEXT II
  1838. 34570  RETURN
  1839. 34575 '
  1840. 34670 '
  1841. 35000 *HKIOPN:'---------- インデックスファイルオープン
  1842. 35005  DRV$=LEFT$(DATDRV$,2)
  1843. 35010  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 35020
  1844. 35015  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1845. 35020  FLN$=DRV$+"(38)"+PATH$+"\HLIDX.DAT"
  1846. 35025  OPEN "R",#2,FLN$
  1847. 35030  FIELD #2,6 AS I$(1),32 AS I$(2)
  1848. 35035  IR=LOF(2)
  1849. 35040  RETURN
  1850. 35045 '
  1851. 35050 *HKDOPN:'---------- 家計簿データファイルオープン
  1852. 35055  DRV$=LEFT$(DATDRV$,2)
  1853. 35060  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 35070
  1854. 35065  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1855. 35070  FLN$=DRV$+"(1120)"+PATH$+"\HL"+IYM$+".DAT"
  1856. 35075  OPEN "R",#1,FLN$
  1857. 35080  FIELD #1,128 AS D$(1),10*16 AS D$(2),52*4 AS D$(3),52*4 AS D$(4),52*4 AS D$(5),52*4 AS D$(6)
  1858. 35085  AR=LOF(1)
  1859. 35090  RETURN
  1860. 35095 '
  1861. 35100 *ANLSOPN:'---------- 分析条件ファイルオープン
  1862. 35105  DRV$=LEFT$(PRGDRV$,2)
  1863. 35110  IF LEN(PRGDRV$)=3 THEN DRV$=LEFT$(PRGDRV$,2):PATH$="":GOTO 35120
  1864. 35115  PATH$=RIGHT$(PRGDRV$,LEN(PRGDRV$)-2)
  1865. 35120  FLN$=DRV$+"(54)"+PATH$+"\ANLS.DAT"
  1866. 35125  OPEN "R",#1,FLN$
  1867. 35130  FIELD #1,4 AS S$(1),2 AS S$(2),4 AS S$(3),2 AS S$(4),24 AS S$(5),8 AS S$(6),8 AS S$(7),2 AS S$(8)
  1868. 35135  RETURN
  1869. 35140 '
  1870. 35145 *HKTOPN:'---------- 年間統計ファイルオープン
  1871. 35150  DRV$=LEFT$(DATDRV$,2)
  1872. 35155  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 35165
  1873. 35160  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1874. 35165  FLN$=DRV$+"(200)"+PATH$+"\HL"+LEFT$(IYM$,4)+"AL.DAT"
  1875. 35170  OPEN "R",#1,FLN$
  1876. 35175  FIELD #1,10*20 AS M$
  1877. 35180  RETURN
  1878. 35185 '
  1879. 35190 *HKISRC:'---------- インデックスファイル検索
  1880. 35195  FIDX=0
  1881. 35200  GOSUB *HKIOPN
  1882. 35205  FOR R=1 TO IR
  1883. 35210    GET #2,R
  1884. 35215    IF IYM$<>I$(1) THEN 35225
  1885. 35220    IYM$=I$(1):IMAK$=I$(2):RI=R:R=IR+1:FIDX=1
  1886. 35225  NEXT R:IF FIDX=0 THEN 35245
  1887. 35230  GET #2,RI
  1888. 35235  YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
  1889. 35240  YRM=VAL(YRM$):MNM=VAL(MNM$)
  1890. 35245  CLOSE #2
  1891. 35250  RETURN
  1892. 35255 '
  1893. 35260 *HKIPUT:'---------- インデックスファイル書き込み
  1894. 35265  GOSUB *HKIOPN
  1895. 35270  LSET I$(1)=IYM$
  1896. 35275  LSET I$(2)=IMAK$
  1897. 35280  PUT #2,RI
  1898. 35285  CLOSE #2
  1899. 35290  RETURN
  1900. 35295 '
  1901. 35300 *HKDGET:'---------- 家計簿データ読み込み
  1902. 35305  GOSUB *HKDOPN
  1903. 35310  R=RDY
  1904. 35315  GET #1,R
  1905. 35320  DEV$=D$(1)
  1906. 35325  FOR II=1 TO 16:DYN$(II   )=MID$(D$(2),(II-1)*10+1,10):NEXT II
  1907. 35330  FOR II=1 TO  4:DRM$(II+ 0)=MID$(D$(3),(II-1)*52+1,52):NEXT II
  1908. 35335  FOR II=1 TO  4:DRM$(II+ 4)=MID$(D$(4),(II-1)*52+1,52):NEXT II
  1909. 35340  FOR II=1 TO  4:DRM$(II+ 8)=MID$(D$(5),(II-1)*52+1,52):NEXT II
  1910. 35345  FOR II=1 TO  4:DRM$(II+12)=MID$(D$(6),(II-1)*52+1,52):NEXT II
  1911. 35355  GOSUB *HKDCAL
  1912. 35360  CLOSE #1
  1913. 35365  RETURN
  1914. 35370 '
  1915. 35375 *HKDCAL:'---------- 家計簿金額計算
  1916. 35380  FOR II=1 TO 15:DYN#(II)=VAL(DYN$(II)):NEXT II
  1917. 35385  IF TCALF=1 THEN TCALF=0:RETURN
  1918. 35390  DYN#(16)=0:FOR II=1 TO 3 :DYN#(16)=DYN#(16)+DYN#(II):NEXT II
  1919. 35395  DYN$(16)=RIGHT$(SPACE$(8)+STR$(DYN#(16)),8)
  1920. 35400  DYN#(18)=0:FOR II=4 TO 7 :DYN#(18)=DYN#(18)+DYN#(II):NEXT II
  1921. 35405  DYN$(18)=RIGHT$(SPACE$(8)+STR$(DYN#(18)),8)
  1922. 35410  DYN#(17)=0:FOR II=4 TO 15:DYN#(17)=DYN#(17)+DYN#(II):NEXT II
  1923. 35415  DYN$(17)=RIGHT$(SPACE$(8)+STR$(DYN#(17)),8)
  1924. 35420  RETURN
  1925. 35425 '
  1926. 35430 *ANLSGET:'---------- 分析条件ファイル読み込み
  1927. 35435  GOSUB *ANLSOPN
  1928. 35440  GET #1,1
  1929. 35445  FOR II=1 TO 8:SX$(II)=S$(II):NEXT II
  1930. 35450  CLOSE #1
  1931. 35455  SR1YR=VAL(SX$(1)):SR1MN=VAL(SX$(2))
  1932. 35460  SR2YR=VAL(SX$(3)):SR2MN=VAL(SX$(4))
  1933. 35465  RETURN
  1934. 35470 '
  1935. 35475 *ANLSPUT:'---------- 分析条件ファイル書き込み
  1936. 35480  GOSUB *ANLSOPN
  1937. 35485  FOR II=1 TO 8:LSET S$(II)=SX$(II):NEXT II
  1938. 35490  PUT #1,1
  1939. 35495  CLOSE #1
  1940. 35500  RETURN
  1941. 35505 '
  1942. 35510 *HKTGET:'---------- 年間統計ファイル読み込み
  1943. 35515  IF SDAYC=1 THEN GOSUB *HKTOPN ELSE GOSUB *HKTOPNB:'V1.4
  1944. 35520  R=RMN
  1945. 35525  GET #1,R
  1946. 35530  FOR II=1 TO 20
  1947. 35535    MX$(II)=MID$(M$,(II-1)*10+1,10)
  1948. 35540    MX#(II)=VAL(MX$(II))
  1949. 35545  NEXT II
  1950. 35550  CLOSE #1
  1951. 35555  RETURN
  1952. 35560 '
  1953. 35565 *HKTPUT:'---------- 年間統計ファイル書き込み
  1954. 35570  IF SDAYC=1 THEN GOSUB *HKTOPN ELSE GOSUB *HKTOPNB:'V1.4
  1955. 35575  R=RMN:MX$=SPACE$(200)
  1956. 35580  FOR II=1 TO 20
  1957. 35585    MX$(II)=RIGHT$(SPACE$(10)+STR$(MX#(II)),10)
  1958. 35590    MID$(MX$,(II-1)*10+1,10)=MX$(II)
  1959. 35595    LSET M$=MX$
  1960. 35600  NEXT II
  1961. 35605  PUT #1,R
  1962. 35610  CLOSE #1
  1963. 35615  RETURN
  1964. 35620 '
  1965. 35625 *HKTCAL:'---------- 年間統計ファイル演算
  1966. 35630  LXX=POS(0):LYX=CSRLIN
  1967. 35635  FOR II=1 TO 20:MX#(II)=0:NEXT II
  1968. 35640  FOR RDY=1 TO 31
  1969. 35645    TTCC=7:GOSUB *HKTCALS
  1970. 35675  NEXT RDY
  1971. 35680  CLOSE:LOCATE 60,23:COLOR 7:PRINT SPACE$(19);
  1972. 35685  LOCATE LXX,LYX:RETURN
  1973. 35690 '
  1974. 35695 *HKIGET:'---------- インデックスデータ読みだし
  1975. 35700  GOSUB *HKIOPN
  1976. 35705  GET #2,RI
  1977. 35710  IYM$=I$(1):IMAK$=I$(2)
  1978. 35715  YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
  1979. 35720  YRM=VAL(YRM$):MNM=VAL(MNM$)
  1980. 35725  CLOSE #2
  1981. 35730  RETURN
  1982. 35735 '
  1983. 36145 *HKTOPNB:'---------- 年間統計ファイルオープンB
  1984. 36150  DRV$=LEFT$(DATDRV$,2)
  1985. 36155  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 36165
  1986. 36160  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1987. 36165  FLN$=DRV$+"(200)"+PATH$+"\HL"+LEFT$(IYM$,4)+"BL.DAT"
  1988. 36170  OPEN "R",#1,FLN$
  1989. 36175  FIELD #1,10*20 AS M$
  1990. 36180  RETURN
  1991. 36185 '
  1992. 36625 *HKTCALB:'---------- 年間統計ファイル演算B
  1993. 36630  LXX=POS(0):LYX=CSRLIN
  1994. 36632  YRMX=YRM:MNMX=MNM:YRMX$=YRM$:MNMX$=MNM$
  1995. 36635  FOR II=1 TO 20:MX#(II)=0:NEXT II
  1996. 36640  FOR RDY=SDAY TO 31
  1997. 36645    TTCC=6:GOSUB *HKTCALS
  1998. 36675  NEXT RDY
  1999. 36680  YR=YRM:MN=MNM:YDEF=0:MDEF=+1:DDEF=0:GOSUB *年月日変更
  2000. 36682  IYM$=YR$+MN$:GOSUB *HKISRC
  2001. 36690  IF FIDX=0 THEN 36775
  2002. 36695  IF SDAY=1 THEN 36775
  2003. 36740  FOR RDY=1 TO SDAY-1
  2004. 36745    TTCC=6:GOSUB *HKTCALS
  2005. 36750  NEXT RDY
  2006. 36775  YRM=YRMX:MNM=MNMX:YRM$=YRMX$:MNM$=MNMX$
  2007. 36776  IYM$=YRM$+MNM$:GOSUB *HKISRC
  2008. 36780  CLOSE:LOCATE 60,23:COLOR 7:PRINT SPACE$(19);
  2009. 36785  LOCATE LXX,LYX:RETURN
  2010. 36790 '
  2011. 36800 *HKTCALS:'統計ファイル演算共通sub
  2012. 36805    LINE(60*8,465)-(639,479),PSET,0,BF
  2013. 36806    MES$=YRM$+"."+MNM$+"."+RIGHT$(" "+STR$(RDY),2)+" 演算中"
  2014. 36810    SYMBOL(60*8,465),MES$,.75!,.75!,TTCC
  2015. 36815    GOSUB *HKDGET
  2016. 36820    FOR II=1 TO 18
  2017. 36825      MX#(II)=MX#(II)+DYN#(II)
  2018. 36830    NEXT II
  2019. 36835    RETURN
  2020. 36840 '
  2021. 39000 '//////////////////////////////////////////////////
  2022. 39010 *CONFIGファイルチェック'  V1.4 1994.06.19
  2023. 39020 '                         FOR HK T.Komura
  2024. 39030  CFLNO=0
  2025. 39040  OPEN "R",#1,"(1)HK.CFG"
  2026. 39050  FIELD #1,1 AS D$
  2027. 39060  IF LOF(1)=0 THEN *CFGFE1
  2028. 39070  CLOSE
  2029. 39080  OPEN "I",#1,"HK.CFG"
  2030. 39085  GOSUB *CFGREAD:ABOUT$=CFG$ :'-- about$         [0]
  2031. 39090  GOSUB *CFGREAD:PRGDRV$=CFG$:'-- PRGDRV$        [1]
  2032. 39092  FILES ,C,ARY&:N=ARY&(1):DIM ARY$(N)
  2033. 39094  FILES ,N,ARY$:PRGDRV$=ARY$(0):ERASE ARY$
  2034. 39100  GOSUB *CFGREAD:DATDRV$=CFG$:'-- DATDRV$        [2]
  2035. 39110  GOSUB *CFGREAD:RAMDRV$=CFG$:'-- RAMDRV$        [3]
  2036. 39120  TIFDRV$=PRGDRV$+"\TIFF"    :'-- TIFDRV$        [4]
  2037. 39130  GOSUB *CFGREAD:FMBDRV$=CFG$:'-- FMBDRV$        [5]
  2038. 39140  GOSUB *CFGREAD             :'-- SNDMF          [6]
  2039. 39150    IF LEFT$(CFG$,5)<>"SNDMF" THEN *CFGFE2
  2040. 39160    SNDMF=VAL(RIGHT$(CFG$,1))
  2041. 39170  GOSUB *CFGREAD:SNDDRV$=CFG$:'-- SNDDRV$        [7]
  2042. 39180  GOSUB *CFGREAD             :'-- SWAIT          [8]
  2043. 39190    IF LEFT$(CFG$,4)<>"WAIT" THEN *CFGFE2
  2044. 39200    SWAIT=VAL(RIGHT$(CFG$,LEN(CFG$)-5))
  2045. 39210  FOR II=1 TO 15             :'             [9]-[10]
  2046. 39220    GOSUB *CFGREAD:CFI$(II)=CFG$
  2047. 39230  NEXT II
  2048. 39240  GOSUB *CFGREAD             :'-- DICIF         [11]
  2049. 39250    IF LEFT$(CFG$,5)<>"DICIF" THEN *CFGFE2
  2050. 39260    DICIF=VAL(RIGHT$(CFG$,1))
  2051. 39270  GOSUB *CFGREAD             :'-- DICSF         [11]
  2052. 39280    IF LEFT$(CFG$,5)<>"DICSF" THEN *CFGFE2
  2053. 39290    DICSF=VAL(RIGHT$(CFG$,1))
  2054. 39300  GOSUB *CFGREAD:DICDRV$=CFG$:'-- DICDRV$       [12]
  2055. 39310  GOSUB *CFGREAD             :'-- taxr$         [13]
  2056. 39320    IF LEFT$(CFG$,4)<>"TAXR" THEN *CFGFE2
  2057. 39330    TAXR$=RIGHT$(CFG$,LEN(CFG$)-5)
  2058. 39340  GOSUB *CFGREAD             :'-- CALCF         [14]
  2059. 39350    IF LEFT$(CFG$,5)<>"CALCF" THEN *CFGFE2
  2060. 39360    CALCF=VAL(RIGHT$(CFG$,1))
  2061. 39370  GOSUB *CFGREAD             :'--SDAY           [15]
  2062. 39380    IF LEFT$(CFG$,4)<>"SDAY" THEN *CFGFE2
  2063. 39390    SDAY=VAL(RIGHT$(CFG$,2))
  2064. 39400    SDAY$=RIGHT$(STR$(100+SDAY),2)
  2065. 39410    IF SDAY>0 THEN MOFF=0 ELSE MOFF=-1
  2066. 39420  GOSUB *CFGREAD             :'-- SSYMD$        [16]
  2067. 39430    IF LEFT$(CFG$,5)<>"SSYMD" THEN *CFGFE2
  2068. 39440    SSYMD$=RIGHT$(CFG$,8)
  2069. 39450  CLOSE
  2070. 39460  RETURN
  2071. 39470 *CFGREAD:'////////////////////////////////////
  2072. 39480  IF EOF(1)<>0 THEN *CFGFE3
  2073. 39490  LINE INPUT #1,CFG$:CFLNO=CFLNO+1
  2074. 39500  IF LEFT$(CFG$,1)="/" THEN 39480
  2075. 39510  RETURN
  2076. 39520 '------------------------------------------------------------------
  2077. 39530 *CFGFE1
  2078. 39540  CFE$="HK.CFG ファイルが見当たりません。 家計簿を終了します。"
  2079. 39550  GOTO *CFGFEP
  2080. 39560 *CFGFE2
  2081. 39570  CFE$="HK.CFGファイル 行番号"+STR$(CFLNO)+"の内容に誤りがあります。 家計簿を終了します。"
  2082. 39580  GOTO *CFGFEP
  2083. 39590 *CFGFE3
  2084. 39600  CFE$="HK.CFG ファイルの項目に不足があります。 家計簿を終了します。"
  2085. 39610  GOTO *CFGFEP
  2086. 39620 '-------------------------------------------------------------------
  2087. 39630 *CFGFEP
  2088. 39640  LOCATE 2,23:COLOR 6:PRINT CFE$;
  2089. 39650  CLOSE :WAIT 100
  2090. 39660  STOP
  2091. 39670 '///////////////////////////////////////////////////////////////////
  2092. 40000 *ボタン座標:'-------------------------------------------------------
  2093. 40010 DATA 6   'SWGN        スイッチグループ数 
  2094. 40020 '/////////////////////////////
  2095. 40030 '-------------------- [G1] メインスイッチグループ
  2096. 40040 '    SWN(G),SMX,SMY,SMW
  2097. 40050 DATA 13               :'ボタン個数
  2098. 40060 '    X1 ,X2 ,Y1 ,Y2
  2099. 40070 DATA 000,639,000,479  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2100. 40080 DATA 000,000,000,000  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2101. 40090 '--------------------
  2102. 40100 '    XB1 XB2 YB1 YB2 
  2103. 40110 DATA   0,123,  0, 22  '  HK2   1
  2104. 40120 DATA 124,168,  5, 22  '記  入  2
  2105. 40130 DATA 169,212,  5, 22  '検  索  3
  2106. 40140 DATA 213,256,  5, 22  '分  析  4
  2107. 40150 DATA 257,300,  5, 22  'カレンダー  5
  2108. 40160 DATA 301,344,  5, 22  '設  定  6
  2109. 40170 DATA 444,567,  0, 22  '日  付  7
  2110. 40180 DATA 568,591,  0, 22  'clock   8
  2111. 40190 DATA 592,615,  0, 22  'help    9
  2112. 40200 DATA 616,639,  0, 22  'END    10
  2113. 40210 '
  2114. 40220 DATA 238,255, 34, 48  'select   11
  2115. 40270 DATA 544,591, 28, 54  '実行     12
  2116. 40280 DATA 592,639, 28, 54  '取消     13
  2117. 40290 '
  2118. 40560 '
  2119. 41000 '-------------------- [G2] 検索条件選択スイッチグループ
  2120. 41010 '    SWN(G),SMX,SMY,SMW
  2121. 41020 DATA 31               :'ボタン個数
  2122. 41030 '    X1 ,X2 ,Y1 ,Y2
  2123. 41040 DATA 150,476,150,367  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2124. 41050 DATA 000,639,023,465  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2125. 41060 '--------------------
  2126. 41070 '    XB1 XB2 YB1 YB2 
  2127. 41080 DATA 249,284,  6, 22  '決定-------- 1
  2128. 41090 DATA 285,320,  6, 22  '取消-------- 2
  2129. 41100 DATA 155,174, 30, 46  '▲---------- 3
  2130. 41110 DATA 175,194, 30, 46  '▼---------- 4
  2131. 41120 DATA 258,277, 30, 46  '▲---------- 5
  2132. 41130 DATA 278,297, 30, 46  '▼---------- 6
  2133. 41140 DATA 155,174, 53, 69  '▲---------- 7
  2134. 41150 DATA 175,194, 53, 69  '▼---------- 8
  2135. 41160 DATA 258,277, 53, 69  '▲---------- 9
  2136. 41170 DATA 278,297, 53, 69  '▼----------10
  2137. 41215 DATA   8, 21,  8, 21  'drag    ----11
  2138. 41220 '
  2139. 41230 DATA 269,314,137,153  '出来事------12  1
  2140. 41240 DATA  85,130, 82, 98  '給 与------13  2
  2141. 41250 DATA  85,130, 99,115  '臨 時------14  3
  2142. 41260 DATA  85,130,116,132  '他収入------15  4
  2143. 41270 DATA 131,176, 82, 98  '食 費------16  5
  2144. 41280 DATA 131,176, 99,115  '生活費------17  6
  2145. 41290 DATA 131,176,116,132  '洗濯代------18  7
  2146. 41300 DATA 177,222, 82, 98  '光熱費------19  8
  2147. 41310 DATA 177,222, 99,115  '被服費------20  9
  2148. 41320 DATA 177,222,116,132  '交際費------21 10
  2149. 41330 DATA 223,268, 82, 98  '娯楽費------22 11 
  2150. 41340 DATA 223,268, 99,115  '酒 代------23 12 
  2151. 41350 DATA 223,268,116,132  '車維持------24 13
  2152. 41360 DATA 269,314, 82, 98  '教育費------25 14
  2153. 41370 DATA 269,314, 99,115  '雑 費------26 15
  2154. 41380 DATA 269,314,116,132  '他支出------27 16
  2155. 41390 DATA  85,130,137,153  '全収入------28 17
  2156. 41400 DATA 131,176,137,153  '基支出------29 18
  2157. 41410 DATA 177,222,137,153  '全支出------30 19
  2158. 41420 DATA 223,268,137,153  '全収支------31 20
  2159. 41430 '
  2160. 41500 '-------------------- [G3] 分析モード選択スイッチグループ
  2161. 41510 '    SWN(G),SMX,SMY,SMW
  2162. 41520 DATA 11               :'ボタン個数
  2163. 41530 '    X1 ,X2 ,Y1 ,Y2
  2164. 41540 DATA 123,516,083,359  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2165. 41550 DATA 000,639,023,465  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2166. 41560 '--------------------
  2167. 41570 '    XB1 XB2 YB1 YB2 
  2168. 41590 DATA 375,393,  0, 17  '取消-------- 1
  2169. 41715 DATA   4, 17,  2, 15  'drag    ---- 2
  2170. 41730 DATA   5,132, 23,105  'an1   ------ 3
  2171. 41740 DATA 133,260, 23,105  'an2   ------ 4
  2172. 41750 DATA 261,388, 23,105  'an3   ------ 5
  2173. 41760 DATA   5,132,106,188  'an4   ------ 6
  2174. 41770 DATA 133,260,106,188  'an5   ------ 7
  2175. 41780 DATA 261,388,106,188  'an6   ------ 8
  2176. 41790 DATA   5,132,189,271  'an7   ------ 9
  2177. 41800 DATA 133,260,189,271  'an8   ------ 10
  2178. 41810 DATA 261,388,189,271  'an9   ------ 11
  2179. 42000 '-------------------- スイッチグループ[4] 確認
  2180. 42010 DATA 3                :'ボタン個数
  2181. 42020 '    X1 ,X2 ,Y1 ,Y2
  2182. 42030 DATA 106,522,258,287  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2183. 42040 DATA 000,639,023,460  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2184. 42050 '--------------------
  2185. 42060 '    XB1 XB2 YB1 YB2
  2186. 42070 DATA 338,369,  6, 23  ' OK     01
  2187. 42080 DATA 370,401,  6, 23  ' NG     02
  2188. 42090 DATA   8, 27,  5, 24  'drag
  2189. 42100 '
  2190. 42110 '
  2191. 42400 '-------------------- スイッチグループ(5) Helpグループ
  2192. 42410 DATA 6               :'ボタン個数
  2193. 42420 '    X1 ,X2 ,Y1 ,Y2
  2194. 42430 DATA  60,577,100,421  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2195. 42440 DATA 000,639,023,460  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2196. 42450 '
  2197. 42460 '    XB1 XB2 YB1 YB2 SWM$     SMC SWNO.
  2198. 42470 DATA 499,512, 25, 38  '前頁
  2199. 42480 DATA 499,512, 39, 52  '前行
  2200. 42490 DATA 499,512,289,302  '次行
  2201. 42500 DATA 499,512,303,316  '次頁
  2202. 42510 DATA 499,512,  6, 19  '終了
  2203. 42520 DATA   6, 17,  7, 18  'drag
  2204. 42530 '
  2205. 42540 '-------------------- スイッチグループ[6] デジタル時計
  2206. 42550 DATA 2                :'ボタン個数
  2207. 42560 '    X1 ,X2 ,Y1 ,Y2
  2208. 42570 DATA  46,607,100,306  :' ウィンドウ座標   W_X1,W_X2,W_Y1,W_Y2
  2209. 42580 DATA 000,639,023,460  :'ドラッグ有効範囲 W_XA,W_XB,W_YA,W_YB
  2210. 42590 '--------------------
  2211. 42600 '    XB1 XB2 YB1 YB2 SWM$         SMC
  2212. 42610 DATA 543,561,  0, 18  ' end    01
  2213. 42620 DATA   3, 16,  3, 16  ' drag   02
  2214. 42630 '
  2215. 50000 *分析モード項目
  2216. 50010 DATA 9  '10
  2217. 50020 '    "  分析モード  ",開始,終了,項目
  2218. 50030 '       SMOPT(SMODE,  [1]  [2]  [3] ) 0:無効
  2219. 50040 '                                     1:全項目有効
  2220. 50050 '                                     2:合計項目無効
  2221. 50060 DATA "月間合計額推移",   1,  24,   1
  2222. 50070 DATA "月間合計額累積",   1,  24,   1
  2223. 50080 DATA "日別項目別変動",   1,  12,   2
  2224. 50090 DATA "月間収支推移  ",   1,  24,   0
  2225. 50100 DATA "月間日累積推移",   1,   6,   1
  2226. 50110 DATA "項目別比率分析",   1,  48,   0
  2227. 50120 DATA "エンゲル係数推移 ",   1,  18,   0
  2228. 50130 'DATA "年別動向比較  ",   1,  48,   1
  2229. 50140 DATA "月間レポート印刷 ",   1,   0,   0
  2230. 50150 DATA "総計演算処理  ",   0,   0,   0
  2231. 50160 '
  2232. 50170 *項目データ:'        SITM
  2233. 50180 DATA "出来事",0'----- 1
  2234. 50190 DATA "  収 1",4'----- 2
  2235. 50200 DATA "  入 2",4'----- 3
  2236. 50210 DATA "     3",4'----- 4
  2237. 50220 DATA "  支 1",1'----- 5
  2238. 50230 DATA "  出 2",1'----- 6
  2239. 50240 DATA "     3",1'----- 7
  2240. 50250 DATA "     4",1'----- 8
  2241. 50260 DATA "     5",1'----- 9
  2242. 50270 DATA "     6",1'-----10
  2243. 50280 DATA "     7",1'-----11'
  2244. 50290 DATA "     8",1'-----12
  2245. 50300 DATA "     9",1'-----13
  2246. 50310 DATA "    10",1'-----14
  2247. 50320 DATA "    11",1'-----15
  2248. 50330 DATA "    12",2'-----16
  2249. 50340 DATA "全収入",2'-----17
  2250. 50350 DATA "基支出",2'-----18
  2251. 50360 DATA "全支出",2'-----19
  2252. 50370 DATA "全収支",2'-----20
  2253. 50380 '
  2254. 51000 *DCLOCKDATA
  2255. 51010 '    1,2,3,4,5,6,7 
  2256. 51020 DATA 1,1,1,1,1,1,0 '0     (1)
  2257. 51030 DATA 0,1,1,0,0,0,0 '1     ---
  2258. 51040 DATA 1,1,0,1,1,0,1 '2    |   |(2)
  2259. 51050 DATA 1,1,1,1,0,0,1 '3 (6)|(7)|        ●(8)
  2260. 51060 DATA 0,1,1,0,0,1,1 '4     ---
  2261. 51070 DATA 1,0,1,1,0,1,1 '5    |   |(3)     ●(9)
  2262. 51080 DATA 1,0,1,1,1,1,1 '6 (5)|   |
  2263. 51090 DATA 1,1,1,0,0,0,0 '7     ---
  2264. 51100 DATA 1,1,1,1,1,1,1 '8     (4)
  2265. 51110 DATA 1,1,1,1,0,1,1 '9    
  2266. 51120 '    dgx,dgy 
  2267. 51130 DATA  80, 40       '(1)
  2268. 51140 DATA 120, 70       '(2)
  2269. 51150 DATA 110,140       '(3)
  2270. 51160 DATA  80,180       '(4)
  2271. 51170 DATA  40,140       '(5)
  2272. 51180 DATA  50, 70       '(6)
  2273. 51190 DATA  80,100       '(7)
  2274. 51200 DATA 280, 80       '(8)
  2275. 51210 DATA 280,140       '(9)
  2276. 51220 '   ofset
  2277. 51230 DATA 0      '1桁
  2278. 51240 DATA 120    '2桁
  2279. 51250 DATA 280    '3桁
  2280. 51260 DATA 400    '4桁
  2281. 51270 '
  2282. 60000 ' 座標確認 DEBUG ROUTINE
  2283. 60010 LOAD@ "e:\work\hk2\tiff\hk2proc.tif",(150,200)'
  2284. 60020 MOUSE 0:MOUSE 1,0,0,1
  2285. 60030  IF MOUSE(2,1)<>0 THEN STOP
  2286. 60040  IF MOUSE(2,0)=0 THEN 60040
  2287. 60050  X_M=MOUSE(4,0):Y_M=MOUSE(5,0):LX=INT(X_M/8):LY=INT(Y_M/19)
  2288. 60060  LINE(0,460)-(639,479),PSET,0,BF
  2289. 60070  SYMBOL(0,460),"X="+STR$(X_M)+" Y="+STR$(Y_M),.75!,.75!,6
  2290. 60080  GOTO 60030
  2291. 60090 ' 
  2292. 60100 ' 
  2293.